如何在字符串中切换两个字符?

时间:2015-08-11 13:10:44

标签: java

给定一个字符串作为输入,返回字符串,其中最后两个字符被交换。并且,如果字符串少于2个字符,则不执行任何操作并返回输入字符串。

这是我到目前为止编写的代码:

public class SwapLastChars {

    static String testcase1 = "Hello";

    public static void main(String args[]) {
        SwapLastChars testInstance = new SwapLastChars();
        String result = testInstance.swap(testcase1);
        System.out.println(result);
    }

    public String swap(String str1) {

        String str = "";
        int length = str1.length();
        char last = str1.charAt(length - 1);
        char l = str1.charAt(length - 2);
        if (length == 1)
            return str1;
        for (int i = 0; i < str1.length() - 2; i++) {
            str = str + str1.charAt(i);
        }
        str = str + last + l;
        return str;
    }
}

问题在于我的测试用例,有什么帮助吗?

Testcase    Pass/Fail   Parameters  Actual Output   Expected Output

1           pass        'aabbccdd'      aabbccdd        aabbccdd

2           fail        'A'             null            A

3           pass        'hello'         helol           helol

3 个答案:

答案 0 :(得分:1)

如果你通过&#34; A&#34;您将获得StringIndexOutOfBoundsException而不是null。除非你在catch子句中禁止它并返回null。

快速修复。将长度检查移动到方法的开头。这应该可以解决你的问题。

@SpringBootApplication
public class Application {
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
    Endpoint.publish("http://localhost:8888/ws/send", new SendServiceImpl());
    Endpoint.publish("http://localhost:8888/ws/send23", new SendServiceImpl());
  } 
}

答案 1 :(得分:0)

您应该在功能开始时检查长度。

(-number*0.1)

答案 2 :(得分:0)

我知道这已经得到了解答,但我觉得使用StringBuilder可以简化OP交换方法:

public static String swap(String word) {
    //Answer by Syam
    if (word == null || word.length() < 2) {
        return word;
    }

    //Create new StringBuilder
    StringBuilder s = new StringBuilder(word);

    //Get second last char
    char c = s.charAt(s.length() - 2);

    //Replace second last char with last char
    s.setCharAt(s.length() - 2, s.charAt(s.length() - 1));
    //replace last char with stored char
    s.setCharAt(s.length() - 1, c);

    return s.toString();
}

执行命令

System.out.println(swap("aabbccdd"));
System.out.println(swap("A"));
System.out.println(swap("hello"));

输出:

aabbccdd
A
helol

这是why