您好,我需要一些实习测试任务的帮助。我已经读过几次了,我甚至不能说我肯定知道自己需要做什么。所以任务是:
您必须生成一个由随机ASCII字符组成的随机长度字符串。之后,您需要替换' 1'的所有条目。用Q' Q'和' Q'用' 1'在里面。要完成任务,您可以根据需要多次更改一个子字符串。例如,由于改变" ww" - > " WERT"字符串" wwwwwQ"将成为" wertwertwQ"。编写一个程序,以最佳方式进行必要的更改(进行最少量的替换)。
我已经实现了字符串生成,我根本不知道接下来该做什么。如标题中所述,我需要使用Java来完成此操作。能否请你帮我解决一下这个任务?
正如我所说,我已经完成的是 genString(),它为我生成了一个char数组,还有一个 replace()方法可以完成预期但是它不使用子串,因此看起来这个任务应该以另一种方式完成。
public static char[] genString()
{
int n = rand.nextInt(50) + 1;
char[] arr = new char[n];
for (int i = 0; i<n; i++)
{
arr[i] = (char)(rand.nextInt(95) + 33);
}
return arr;
}
public static void replace(char[] arr)
{
for (int i = 0; i < arr.length; i++)
{
arr[i] = (arr[i] == 'Q') ? '1'
: (arr[i] == '1' ) ? 'Q'
: arr[i];
}
}
我实际上不明白的是,如何在那里使用子串。我不明白如何从&#34; wwwwwQ&#34; to&#34; wertwertwQ&#34; 一样的替代品将帮助我取代Q&#39; Q&#39;在其中
答案 0 :(得分:0)
为了使替换次数最少,我会使用基于流的方法:
StringBuilder sb = new StringBuilder(str);
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == 'Q') {
sb.setCharAt(i, '1');
} else if (str.charAt(i) == '1') {
sb.setCharAt(i, 'Q');
}
}
return sb.toString();
使用StringBuilder
make可以更有效地操作字符串,因为每次更改字母时都不需要创建新字符串。
答案 1 :(得分:-1)
好吧,试试这段代码:
public String Replace(String theString, String first, String Second)
{
String result ="";
result=theString.replace(first, Second);
return result;
}
使用示例:
System.out.println(Replace("wwwwwQ", "ww", "wert"));// result will be: wertwertwQ
我希望它会帮助你,最好的问候