将'1'替换为'Q',将'Q'替换为'1'。字符串中的字符替换。 Java的

时间:2014-11-28 12:14:23

标签: java string

您好,我需要一些实习测试任务的帮助。我已经读过几次了,我甚至不能说我肯定知道自己需要做什么。所以任务是:

您必须生成一个由随机ASCII字符组成的随机长度字符串。之后,您需要替换' 1'的所有条目。用Q' Q'和' Q'用' 1'在里面。要完成任务,您可以根据需要多次更改一个子字符串。例如,由于改变" ww" - > " WERT"字符串" wwwwwQ"将成为" wertwertwQ"。编写一个程序,以最佳方式进行必要的更改(进行最少量的替换)。

我已经实现了字符串生成,我根本不知道接下来该做什么。如标题中所述,我需要使用Java来完成此操作。能否请你帮我解决一下这个任务?

正如我所说,我已经完成的是 genString(),它为我生成了一个char数组,还有一个 replace()方法可以完成预期但是它不使用子串,因此看起来这个任务应该以另一种方式完成。

public static char[] genString()
    {
        int n = rand.nextInt(50) + 1;

        char[] arr = new char[n];

        for (int i = 0; i<n; i++)
        {
            arr[i] = (char)(rand.nextInt(95) + 33);
        }



        return arr;

    }

    public static void replace(char[] arr)
    {
        for (int i = 0; i < arr.length; i++)
        {
            arr[i] = (arr[i] == 'Q') ? '1'
                    : (arr[i] == '1' ) ? 'Q'
                    : arr[i];
        }
    }

我实际上不明白的是,如何在那里使用子串。我不明白如何从&#34; wwwwwQ&#34; to&#34; wertwertwQ&#34; 一样的替代品将帮助我取代Q&#39; Q&#39;在其中

2 个答案:

答案 0 :(得分:0)

为了使替换次数最少,我会使用基于流的方法:

StringBuilder sb = new StringBuilder(str);
for (int i = 0; i < str.length(); i++) {
    if (str.charAt(i) == 'Q') {
        sb.setCharAt(i, '1');
    } else if (str.charAt(i) == '1') {
        sb.setCharAt(i, 'Q');
    } 
}
return sb.toString();

使用StringBuilder make可以更有效地操作字符串,因为每次更改字母时都不需要创建新字符串。

答案 1 :(得分:-1)

好吧,试试这段代码:

public String Replace(String theString, String first, String Second)
    {
        String result =""; 

        result=theString.replace(first, Second); 
        return result;
    }

使用示例:

System.out.println(Replace("wwwwwQ", "ww", "wert"));// result will be: wertwertwQ

我希望它会帮助你,最好的问候