编写一个名为game
的方法,该方法采用普通单词(参数数据类型:String
)并将其转换为B游戏的单词。 B-Game的工作原理是在一个单词的每个元音(a,e,i,o,u)中添加b
加上声音重复。
示例:
play with me
plabay wibith mebe
我的代码:
public static void main(String[] args) {
String s="play with me";
char[] chars = s.toCharArray();
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0;i<chars.length;i++) {
if(chars[i]=='i' || chars[i]=='e' || chars[i]=='a' || chars[i]=='u' || chars[i]=='o' ) {
list.add(i); // add position to list
}
}
int size=chars.length+(list.size()*2);
char [] charsNew= new char[size];
for(int i=0;i<charsNew.length;i++) {
for(int f=0;f<chars.length;f++) {
charsNew[i]=chars[f];
System.out.println(java.util.Arrays.toString(charsNew));
}
}
}
如何在不使用replace()
的情况下执行此操作?
答案 0 :(得分:1)
我会对字符串中的字符进行流式处理,并使用b
s围绕每个元音:
Set<String> vowels = new HashSet<>(Arrays.asList("a", "e", "i", "o", "u"));
String s = "play with me";
String result =
s.chars()
.mapToObj(c -> String.valueOf((char) c))
.map(c -> vowels.contains(c) ? c + "b" + c : c)
.collect(Collectors.joining());
答案 1 :(得分:1)
显然你不需要你(基本上)计算元音时建立的列表。只需使用整数计算它们(这将获得与构建列表和计算其大小相同的结果),但更容易理解并使用更少的资源。 接下来分配内存来构建新字符串,如示例代码中所示。那很好。
然后填写新字符串。这只需要一个循环。我不了解内循环的想法。
你需要记住新字符串的索引,这不是循环计数器,因为如果遇到元音,有时会增加3而不是1。循环遍历未修改的输入字符串。 复制下一个字符并将索引增加到下一个字符串1。 如果角色已被元音另外添加&#39; b&#39;和新字符串的元音,并将索引增加到2。
您应该能够根据此建议制作代码。