for循环到达字符串的末尾

时间:2015-08-31 09:39:09

标签: java string if-statement for-loop

我在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;
}

5 个答案:

答案 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();
}