我偶然发现了以下问题:
给出一个字符串,返回一个由前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”而是空白。有办法挽救我的尝试吗?
答案 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 "";
}