我在CodingBat.com上练习Java,我遇到了问题。
zipZap(" azbcpzpp")返回" azbcpzpp"。预计将返回" azbcpzp"
由于
// http://codingbat.com/prob/p180759
// Look for patterns like "zip" and "zap" in the string -- length-3,
// starting with 'z' and ending with 'p'. Return a string where for
// all such words, the middle letter is gone, so "zipXzap" yields "zpXzp".
public String zipZap(String str) {
if (str.length() < 2)
return str;
String result = str.substring(0, 1);
for (int i=1; i < (str.length()-1) ; i++) {
if ((str.charAt(i-i) != 'z') || (str.charAt(i+1) != 'p'))
result += str.charAt(i);
}
result += str.substring(str.length()-1);
return result;
}
答案 0 :(得分:2)
将if条件更改为if ((str.charAt(i - 1) != 'z') || (str.charAt(i + 1) != 'p'))
。否则,您始终检查索引0处的char是否等于'z',因为i-i
始终为0.
public static String zipZap(String str)
{
if (str.length() < 2)
return str;
String result = str.substring(0, 1);
for (int i = 1; i < (str.length() - 1); i++)
{
if ((str.charAt(i - 1) != 'z') || (str.charAt(i + 1) != 'p'))
result += str.charAt(i);
}
result += str.substring(str.length() - 1);
return result;
}
Input: azbcpzpp
Output: azbcpzp
答案 1 :(得分:1)
public String zipZap(String str) {
String temp="";
if(str.length()<=2){
return str;
}
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='z' && str.charAt(i+2)=='p'){
temp=temp+str.charAt(i);
temp=temp+str.charAt(i+2);
i=i+2;
}
else {
temp=temp+str.charAt(i);
}
}
return temp;
}
答案 2 :(得分:0)
public String zipZap(String str)
{
String res="";
if (str.length()<3) return str;
for (int i=0;i<str.length()-2;i++) {
if (str.charAt(i)=='z' && str.charAt(i+2)=='p'){
res = res + str.charAt(i)+str.charAt(i+2);
i+=2;
}
else
res = res + str.charAt(i);
}
if (str.charAt(str.length()-3)!='z')
res = res + str.substring(str.length()-2);
return res;
}
答案 3 :(得分:0)
public String zipZap(String str) {
String g="";
if(str.length()<=2){
return str;
}
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='z' && str.charAt(i+2)=='p'){
g=g+str.charAt(i);
g=g+str.charAt(i+2);
i=i+2;
}
else {
g=g+str.charAt(i);
}
}
return g;
}
答案 4 :(得分:0)
向左查看'z' AND 向右查看'p',如果条件满足则跳过循环迭代;否则在索引处添加字符。
public static String zipZap(String str) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
if (!((i > 0 && str.charAt(i - 1) == 'z') &&
(i < str.length() - 1 && str.charAt(i + 1) == 'p'))) {
answer.append(str.charAt(i));
}
}
return answer.toString();
}