2017-02-25 76 views
-1

我的代码在下面给出了以下错误,我找不出原因。我试图重新排序输入的单词(“波兰”为例)中的顺序:如何在不使用哈希表的情况下对字符串中的字符进行重新排序?

(第一个字母,最后一个字母,第二个字母,第二个最后一个字母,第三个字母...等等),所以输出应该是“Phosli”。

Screenshot

更新代码

public static String encodeTheWord(String word1) 
{ 
    int b = 0; 
    int e = word1.length()-1; 
    String word2 = ""; 
    for (int i=0; i<e; i++) 
    { 
     word2 = word2 + word1.charAt(b) + word1.charAt(e); 
     b+=1; 
     e-=1; 
    } 

    System.out.println(word2); 

    return (word2); 
} 
+0

请不要张贴文字的截图;只是发布文本本身。 – ajb

+0

我会记住这一点,对不起 – daniel11

回答

1

对于一个单词都以连字符量(波兰)的,订单的字符变成051423,因此b的最大值是2并且最小值是e是从53。因此,你的循环应该减少e并增加b两次(所以你运行循环word1.length()/2次)。此外,

int e = word1.length();

将需要:

int e = word1.length() - 1;

对于不平的长度(word1.length() % 2 > 0)的话,你需要额外的检查,否则将重复的中间人物。

+0

你是对的,第一个解决方案只适用于“波兰语”和其他单词。但“水”如同wra came一般。虐待现在尝试你的解决方案,看看它如何变成 – daniel11

+0

我很抱歉,但我不能让你的解决方案工作。你能详细说明一下吗?生病发布我的更新代码(只适用于不平衡的单词)在问题中! – daniel11

+1

您的循环终止条件'i 0)word2 = word2 + word1.charAt(b);' 。 –

1

你的for循环是错误的,你可以在索引一个字符,直到word1.length() - 1 ...

必须是

for (int i=0; i<word1.length()-1; i++) 

同样适用于这个...

word1.charAt(e); 

因为你定义éword1.length()

+0

没有帮助。我仍然得到错误.... – daniel11

+0

同样适用于此:word1.charAt(e); e必须是word1.length() - 1 –

+1

啊,这是谢谢! – daniel11

相关问题