我是不使用main方法的新手,我从Java中开始进行leet编码,它们以特定格式为您提供样板代码。我的逻辑很好,但是由于某种原因,我没有返回正确的字符串。你们可以帮我吗?
class Solution {
public String defangIPaddr(String address) {
char[] newChar = new char[address.length()];
address.getChars(0, address.length(), newChar, 0);
for(int i = 0; i < address.length();i++) {
if(newChar[i] == '.') {
return "[.]";
}else
return Character.toString(newChar[i]);
}
}
}
对于给定的输入1.1.1.1
,我希望作为输出1[.]1[.]1[.]1
。
答案 0 :(得分:3)
基于注释的澄清,而不是尝试单独替换每个点,请使用String#replaceAll
方法立即替换它们。
String address = "1.1.1.1";
address = address.replaceAll("\\.", "[.]"); //replace all dots
System.out.println(address); //prints 1[.]1[.]1[.]1
但是,如果您坚持要自己进行替换,而不是弄乱一堆索引,只需尝试从头开始重新创建字符串,将每个字符附加到StringBuilder
上即可,但是如果是点附加[.]
String address = "1.1.1.1";
StringBuilder sb = new StringBuilder();
for (char c : address.toCharArray()) {
if (c == '.')
sb.append("[.]");
else
sb.append(c);
}
address = sb.toString();
System.out.println(address); //prints 1[.]1[.]1[.]1
答案 1 :(得分:0)
逻辑不好,因为看起来您仅返回输入字符串的第一个字符。您可以将字符串生成器用于您的解决方案,也可以仅使用要附加的新字符串。样本:
class Solution {
public String defangIPaddr(String address) {
char[] newChar = new char[address.length()];
address.getChars(0, address.length(), newChar, 0);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < address.length();i++) {
if(newChar[i] == '.') {
sb.append("[.]"); //append to the string builder
}else
sb.append(Character.toString(newChar[i]));
}
return sb.toString(); //return the string then
}
}
我希望这会有所帮助。祝好运。