问题是:mutation()
传递两个字符串并返回一个字符串。 fzgh
的第一个字符串中的每个匹配项都替换为第二个字符串。
mutation("Hello. I want an fzgh. Give me an fzgh now.", "IPhone 6")-> "Hello. I want an IPhone 6. Give me an IPhone 6 now."
这是我的尝试:
public static String mutation(String s, String t){
int f=s.indexOf("fzgh");
String w="";
if(f !=-1){
w=w+s.substring(0,f)+t;
}
return w;
}
我知道.replace()
,但我们不允许使用它。我们必须使用indexOf()
答案 0 :(得分:3)
您可以像这样定义突变
public static String mutation(String s,String t){
int f=s.indexOf("fzgh");
int l =4;//length of "fzgh"
String w = s;
while(f!=-1){
w=w.substring(0,f)+t+w.substring(f+l,w.length());
f=w.indexOf("fzgh");
}
return w;
}
这将从String中删除所有“fzgh”并将其替换为String t。
答案 1 :(得分:2)
如果您可以使用split
和join
方法,则可以轻松解决此问题。
public static String mutation(String s, String t) {
return String.join(t, s.split("fzgh"));
}
split
会将输入字符串拆分为"fzgh"
并返回String
数组,在这种情况下,它将返回["Hello. I want an ", ". Give me an ", " now."]
。现在,您可以使用"IPhone 6"
方法将每个元素与join
一起加入。
请注意,Java8中引入了join
。
但如果您只应indexOf
和substring
来解决此问题,则代码会更复杂,但不会那么复杂。
public static String mutation(String s, String t) {
StringBuilder sb = new StringBuilder();
int p = 0, q = 0;
while ((q = s.indexOf("fzgh", p)) >= 0) {
sb.append(s.substring(p, q));
sb.append(t);
p = q+4;
}
sb.append(s.substring(p));
return sb.toString();
}
答案 2 :(得分:0)
它有点笨拙但你去了,如果你需要解释,我会同时编辑:)
*编辑:它还不够好,会尝试修复它。这是另一种方式,有点不同的解决方案,但不是那么好,如果我无法修复将删除它。
*编辑#2:已修复
import java.util.Scanner;
import java.io.*;
class Mutation
{
public static String mutation(String s, String t){
String toBeReplaced = "fzgh";
int sizeOfThatString = toBeReplaced.length();
String[] array = s.split(" ");
for (int i = 0; i < array.length; i++) {
String tempString= array[i];
if(tempString.length()>sizeOfThatString) {
if(tempString.contains(toBeReplaced)) {
String other = array[i].substring(sizeOfThatString);
array[i] = t+other;
}
}
if(tempString.equals(toBeReplaced)) {
array[i] = t;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
if(i!=array.length) {
sb.append(array[i]+" ");
}
else {
sb.append(array[i]);
}
}
return sb.toString();
}
public static void main(String[] args) {
Arabic_Randomizer ar= new Arabic_Randomizer();
System.out.println(ar.mutation("Hello. I want an fzgh. Give me an fzgh now.", "IPhone 6"));
}
}
答案 3 :(得分:0)
使用此代码 公共课程{
public static String mutation(String w,String s, String t){
String toBeReplaced = w;
int sizeOfThatString = toBeReplaced.length();
String[] array = s.split(" ");
for (int i = 0; i < array.length; i++) {
String tempString= array[i];
if(tempString.length()>sizeOfThatString) {
tempString = array[i].substring(0,sizeOfThatString);
System.out.println("TempString " +tempString);
}
if(tempString.equals(w)) {
array[i] = t;
}
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
if(i!=array.length) {
sb.append(array[i]+" ");
}
else {
sb.append(array[i]);
}
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(mutation("fzgh","Hello. I want an fzgh. Give me an fzgh now.", "IPhone 6"));
}
}
出: