如何在给定条件下返回由前两个字符组成的字符串

时间:2018-12-20 00:07:46

标签: java

我偶然发现了以下问题:

给出一个字符串,返回一个由前2个字符组成的字符串(如果存在),但是仅当它是'o'时才包含第一个字符,而如果它是'z'则仅包含第二个字符,因此“ ozymandias”产生“盎司”。

贝勒是我的尝试,但请考虑一下我是一个初学者。

public String startOz(String str) {
 if(str.length()>=2 && str.substring(0,2)=="oz")
     return "oz";
 if(str.length()>=1 && str.substring(0,1)=="o")
     return "o";
 if(str.length()>=2 && str.substring(1,2)=="z")
     return "z";
   return "";
}   

不幸的是,这段代码并未包含所有可能性,也许可以通过一个示例更好地理解,如果输入为:startOz(“ ozk”),则输出不是“ oz”而是空白。有办法挽救我的尝试吗?

5 个答案:

答案 0 :(得分:3)

您只需检查字符的位置,看看它们是否正确。像这样

String str = ("ozymondiaz");    
String returnString = ("");
if(str.length()>1 && str.charAt(0) == 'o') { returnString+=("o"); } 
if(str.length()>2 && str.charAt(1) == 'z') { returnString+=("z"); } 
    System.out.print(returnString);)

然后将它们组合起来作为您的答案。

您可以在此处检查代码 http://tpcg.io/qdubRQ

答案 1 :(得分:2)

public String startOz(String str) {
  int len = str.length(); // calculating length
  if(len < 1) return new String("");
  if(len > 1 && str.charAt(0) == 'o' && str.charAt(1) == 'z') return new String("oz");  // checking if the string length is more than 2 and it starts with oz
  if(str.charAt(0) == 'o') return new String("o"); // if the string starts with o
  if(str.charAt(1) == 'z') return new String("z"); // if the string has 2nd char as z
  return new String(""); // nothing matched
}

编辑:稍有改进,尽管上面的解决方案已被接受,但是如果输入str =“ z”,则会出现“ StringIndexOutOfBoundsException”的问题,应避免使用。因此,请将第六行编辑为if(len >= 1 && str.charAt(1) == 'z'),这样就可以了。

答案 2 :(得分:1)

我会将问题分解为您正在执行的两个boolean测试中(第一个是至少有一个字符,第一个是o,第二个是至少有两个字符,第二个是是z)。我将使用String.toCharArray()使这些字符更容易使用。然后,您可以测试这些布尔条件。喜欢,

public String startOz(String str) {
    if (str != null) {
        char[] arr = str.toLowerCase().toCharArray();
        boolean oTest = arr.length >= 1 && arr[0] == 'o';
        boolean zTest = arr.length >= 2 && arr[1] == 'z';
        if (oTest && zTest) {
            return "oz";
        } else if (oTest) {
            return "o";
        } else if (zTest) {
            return "z";
        }
    }
    return "";
}

答案 3 :(得分:1)

您可以尝试以下方法:

String result = "";
if(str != null && !str.isEmpty()){
    result = (str.indexOf("o") == 0 ? "o" : "").concat(str.indexOf("z") == 1 ? "z" : "");
}
return result;

答案 4 :(得分:1)

您可以尝试一下 我对您的代码进行了一些编辑,但最终使它起作用

public static String startOz(String str) {
    if(str.length()>=2 && str.substring(0,2).equals("oz"))
    {
        return "oz";
    }
    else if(str.length()>=2 && str.substring(1,2).equals("z"))
    {
        return "z";
    }
    else if (str.length()>=2 && str.substring(0,1).equals("o"))
    {
        return "o";
    }
    return "";
}