gpt4 book ai didi

java - 用字母表中的下一个辅音替换字符串中的辅音

转载 作者:搜寻专家 更新时间:2023-11-01 02:39:35 25 4
gpt4 key购买 nike

我在这里尝试输入一个字符串并将字符串字母与辅音字符串字母进行比较。当输入字母和辅音匹配时,输出应打印下一个辅音字母。

Example:: input = java
output = kawa

这里 j 和 v 是辅音,所以 j 之后的下一个字母是 k,同样在 v 之后我们有 w。

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter any string = ");
String inputString = bf.readLine().toLowerCase();

for(int i=0; i < inputString.length(); i++){
inputChar = inputString.charAt(i);

String consonants = "BCDFGHJKLMNPQRSTVWXYZ".toLowerCase();
for(int j = 0; j < consonants.length(); j++){
stringChar = consonants.charAt(j);

if(inputChar == stringChar){
}

}
}

最佳答案

其他两个答案产生了正确的输出,但它们不是很有效,所以这是我的看法。

您的辅音 应该是一个常量,并且应该简单地以小写字母形式给出。作为一个常量,它应该以大写字母命名(CONSONANTS)。

要进行字符对字符的替换,最有效的方法是使用 toCharArray() 获取原始字符串的 char[] ,修改数组,并使用 new String(char[]) 创建一个新字符串.

CONSONANTS 常量中查找字母索引的最简单方法是使用 indexOf()方法。

为防止索引加 1 时溢出,请使用取模运算符 (%)。

private static final String CONSONANTS = "bcdfghjklmnpqrstvwxyz";

private static String shiftConsonants(String input) {
char[] chars = input.toLowerCase().toCharArray();
for (int i = 0; i < chars.length; i++) {
int idx = CONSONANTS.indexOf(chars[i]);
if (idx != -1)
chars[i] = CONSONANTS.charAt((idx + 1) % CONSONANTS.length());
}
return new String(chars);
}

测试:

System.out.println(shiftConsonants("Java")); // prints: kawa

这是保留原始案例的替代解决方案。

private static final String CONSONANTS = "bcdfghjklmnpqrstvwxyz";
private static String shiftConsonants(String input) {
char[] chars = input.toCharArray();
for (int i = 0; i < chars.length; i++) {
char ch = chars[i];
char lower = Character.toLowerCase(ch);
int idx = CONSONANTS.indexOf(lower);
if (idx != -1) {
char next = CONSONANTS.charAt((idx + 1) % CONSONANTS.length());
chars[i] = (ch == lower ? next : Character.toUpperCase(next));
}
}
return new String(chars);
}

测试:

System.out.println(shiftConsonants("Java")); // prints: Kawa

跟进 comment by @MistahFiggins :

Would casting to int for each character and then modifying the number and casting back be more or less efficient?

我猜错了。对于小写版本(上面的第一个),数字增量是 36%

private static String shiftConsonants(String input) {
char[] chars = input.toLowerCase().toCharArray();
for (int i = 0; i < chars.length; i++) {
char ch = chars[i];
if (ch == 'z')
chars[i] = 'b';
else if (ch >= 'b' && ch <= 'y' && ch != 'e' && ch != 'i' && ch != 'o' && ch != 'u') {
ch = (char)(ch + 1);
if (ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
ch++;
chars[i] = ch;
}
}
return new String(chars);
}

如您所见,它经过优化甚至不考虑 a

关于java - 用字母表中的下一个辅音替换字符串中的辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37017413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com