我今天在面试中做了一个测试,问题是获取词典上最小和最大的子字符串(换句话说,按名称排序)。
link-complete函数SmallestAndLargestSubstring,该函数将由小写英文字母(a-z)组成的字符串S作为参数,并返回以元音开头、以辅音结尾的最小和最大的子字符串。
我的算法通过了基本的测试用例,但没有通过其他的大多数测试用例。这不是最有效的代码,但它是编写速度最快的。
static String[] SmallestAndLargestSubstring(String s) {
ArrayList<Character> vowelList = new ArrayList<Character>();
vowelList.add('a');
vowelList.add('e');
vowelList.add('i');
vowelList.add('o');
vowelList.add('u');
ArrayList<Character> consonantList = new ArrayList<Character>();
for (char c='a'; c<='z'; c++) {
if (!vowelList.contains(c))
consonantList.add(c);
}
ArrayList<String> substringList = new ArrayList<String>();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
if (vowelList.contains(c)) {
String substring = "";
substring+=c;
for (int j=i+1; j<s.length(); j++) {
char c2 = s.charAt(j);
substring+=c2;
if (consonantList.contains(c2)) {
substringList.add(substring);
}
}
}
}
Collections.sort(substringList);
String[] outputAdapter = new String[2];
outputAdapter[0]=substringList.get(0);
outputAdapter[1]=substringList.get(substringList.size()-1);
return outputAdapter;
}
输入
字符串s=“Azizezozuzawwwwwwwwuzzzzzzzzzbbbbbbbbaaaaabbbbbboiz”
我的回答
编辑:这里还有3个测试用例。我的答案与这些测试用例的答案相匹配。
string=“ABA”;最小=“AB”;最大=“AB”;
string=“AAB”;最小=“AAB”;最大=“AB”;
string=“abababaaaaaaaaaaaaaaaaaaaaaaaaaaz”;最小=“AAAAAAAAAAAAAAAAAAAZ”;最大=“AZ”;
/*
It is the Basic code to Obtain Substring which start with Vowel and End up with Consonant. It is going to print on the Basis of Name Comparable, The first and the Last Substring in the List.Similarly we can achieve on the basis of length, the firt and last Substring using different comparator function.
*/
public class StringSubsequencesStartVowelEndConsonant {
static List<String> subsequence = new LinkedList<>();
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the String:\n");
String string = in.next();
findSubstring(string);
}
private static void findSubstring(String string) {
for(int i=0;i<string.length();i++){
if(isVowel(string.charAt(i))){
for(int j=string.length()-1;j>=i;j--){
if(isConsonant(string.charAt(j))){
String subString = string.substring(i,j+1);
subsequence.add(subString);
}
}
}
}
Collections.sort(subsequence);
for(String str : subsequence){
System.out.print(str+" ");
}
System.out.println();
System.out.println(subsequence.get(0));
System.out.println(subsequence.get(subsequence.size()-1));
}
private static boolean isConsonant(char chars) {
return !(chars=='a'|| chars=='e'||chars=='i'||chars=='o'||chars=='u');
}
private static boolean isVowel(char chars) {
return (chars=='a'|| chars=='e'||chars=='i'||chars=='o'||chars=='u');
}
}
本文向大家介绍字符串中最大和最小的单词-JavaScript,包括了字符串中最大和最小的单词-JavaScript的使用技巧和注意事项,需要的朋友参考一下 我们需要编写一个JavaScript函数,该函数接受字符串并返回一个带有两个字符串值的数组,它们应分别是字符串中最小和最大的单词。 例如- 如果字符串是- 那么输出应该是- 因此,让我们为该功能编写代码 示例 以下是代码- 输出结果 控制台中的
还不起作用。所以我放弃链接,我只是编码:
我在研究Euler项目的问题,这是问题五: 最大素因子问题3 13195的素因子为5、7、13和29。 600851475143的最大质因数是什么? 我得到了工作代码: 因数(19*19*19*19*19*19*19*19*19*1999989899) x=33170854034208712,最后一个系数=182128674 33170854034208712 有人知道为什么这没有得到正确的答案吗
问题陈述: 给定一个字符串s和一个整数k,完成该函数,以便找到长度为k的字典最小和最大的子字符串。 代码: 我不明白代码中标记线的机制。有人能给我解释一下吗?
是的,我知道《埃拉托斯特尼筛》在标准的图书馆Prime类中,但我正在尝试实现自己的练习。 我正在逐字逐句地按照维基百科上的描述进行操作: 通过Eratosthenes的方法找到所有小于或等于给定整数n的素数:1.创建一个从2到n的连续整数列表:(2,3,4,…, n)。 2.最初,让p等于2,第一个素数。 3.从p开始,通过以p为增量计数到n来枚举其倍数,并在列表中标记它们(这些将是2p,3p,4
是否有一种简洁的方法可以在一次过程中提取流的最小值和最大值(基于某个比较器)? 似乎有很多方法可以单独获取最小值和最大值,或者我可以将流排序为临时对象,例如: 但这并不简洁,需要分配一个临时对象。我宁愿不要分配一个临时对象,也不要在流中进行两次传递。有其他选择吗?