簡體   English   中英

退貨有什么問題?

[英]What's wrong with this return?

我是不使用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

根據注釋中的說明,而不是嘗試單獨替換每個點,請使用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

邏輯不好,因為好像您僅返回輸入字符串的第一個字符。 您可以將字符串生成器用於您的解決方案,也可以僅使用要附加的新字符串。 樣品:

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
    }
}

希望對您有所幫助。 祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM