gpt4 book ai didi

java - 复制字符串中的元音并在中间添加一个字符串

转载 作者:行者123 更新时间:2023-11-30 07:01:11 24 4
gpt4 key购买 nike

我必须编写一个方法,它接受一个字符串并返回一个新字符串,该字符串复制所有元音并在其间放置一个“b”。唯一的异常(exception)是双元音,其中“ab”应该放在双元音前面。

例如:“hello”将返回“hebellobo” “hearing”将返回“habearing”

我已经对我的代码进行了几个小时的实验,但我没有完成任何事情。好吧,没什么,但不能让它正确运行元音,而且根本没有达到双元音。这是我的代码:

static Scanner sc = new Scanner(System.in);

public static void main(String[] args)
{
System.out.print("Enter a string: ");
String s = sc.nextLine();
String originalString = s;

for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);

if ((c == 'A') || (c == 'a') || (c == 'E') || (c == 'e') || (c == 'I') || (c == 'i') || (c == 'O')
|| (c == 'o') || (c == 'U') || (c == 'u'))
{

String front = s.substring(0, i);
String back = s.substring(i + 1);

s = front + c + "b" + back;
}
}
System.out.println(originalString);
System.out.println(s);
}

感谢您的帮助!

感谢您的帮助,我现在有了以下代码(没有扫描仪):

public static boolean isVowel(char c) {
// TODO exercise 1 task b) part 1

if (c == 'a' || c == 'A' || c == 'Ä' || c == 'e' || c == 'E' || c == 'i' || c == 'I' || c == 'o' || c == 'O'
|| c == 'Ö' || c == 'u' || c == 'U' || c == 'Ü') {
return true;
} else {
return false;
}
}

public static String toB(String text) {
// TODO exercise 1 task b) part 2

StringBuilder b = new StringBuilder();

for (int i = 0; i < text.length() - 1; i++) {
char current = text.charAt(i);
char next = text.charAt(i + 1);

if (isVowel(current)) {
if (isVowel(next)) {
// 1 - Is a vowel followed by a vowel
// Prepend b
b.append("b");
// Write current
b.append(current);
// Write next
b.append(next);
i++; // Skip next vowel
} else {
// 2 - Is a vowel followed by a consonant
b.append(current);
b.append("b");
b.append(current);
}
} else {
// 3 - Is a consonant
b.append(current);
}
}
for (int i = 0; i < text.length() - 1; i++) {
char last = text.charAt(text.length() - 1);
char current = text.charAt(i);
if (isVowel(last)) {
// Case 1
b.append(current);
b.append("b");
b.append(current);

// Case 2 is not possible for last letter
} else {
// Case 3
b.append(last);
}

}
// Here b.toString() is the required string
return b.toString();
}

例如,如果您输入单词“Mother”,则输出为“Mobotheberrrrr”,这完全没问题,只是由于某种原因它重复了最后一个字母“r”。不幸的是,输入“Goal”会导致输出“Gboalll”。

最佳答案

您需要知道当前字母以及下一个字母。

在您的代码中,您仅考虑当前字母。

这是解决该问题的骨架代码。基本上你需要检查:

  • 如果当前字母是元音字母,后跟元音字母
  • 如果当前字母是元音后跟辅音
  • 如果当前字母是辅音

    String originalString = ...
    StringBuilder b = new StringBuilder();
    for (int i = 0; i < s.length() - 1; i++) {
    char current = s.charAt(i);
    char next = s.charAt(i + 1);

    if (isVowel(current)) {
    if (isVowel(next)) {
    // 1 - Is a vowel followed by a vowel
    // Prepend b
    b.append("b");
    // Write current
    b.append(current);
    // Write next
    b.append(next);
    i++; // Skip next vowel
    } else {
    // 2 - Is a vowel followed by a consonant
    b.append(current);
    b.append("b");
    b.append(current);
    }
    } else {
    // 3 - Is a consonant
    b.append(current);
    }
    }

    char last = s.charAt(s.length() - 1);
    if (isVowel(last)) {
    // Case 1
    b.append(current);
    b.append("b");
    b.append(current);

    // Case 2 is not possible for last letter
    } else {
    // Case 3
    b.append(last);
    }


    // Here b.toString() is the required string

请仅将其视为骨架,特别是:

  • 检查边界条件
  • 实现方法isVowel
  • 检查 null 和空字符串

注意:使用 StringBuilder 只是出于性能原因,直接使用 String 会得到相同的结果

关于java - 复制字符串中的元音并在中间添加一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893093/

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