java – 编写一个方法来替换字符串中的所有空格

前端之家收集整理的这篇文章主要介绍了java – 编写一个方法来替换字符串中的所有空格前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于编程问题的问题,从第5版的Gayl Laakmann McDowell的“Cracking The Code Interview”开始.

问题是:写一个方法用”替换字符串中的所有空格.假设字符串在字符串末尾有足够的空间来保存其他字符,并且给出一个字符串的真正长度.我使用了图书代码,使用一个字符数组来实现Java中的解决方案(给出了Java Strings是不可变的):

  1. public class Test {
  2. public void replaceSpaces(char[] str,int length) {
  3. int spaceCount = 0,newLength = 0,i = 0;
  4.  
  5. for(i = 0; i < length; i++) {
  6. if (str[i] == ' ')
  7. spaceCount++;
  8. }
  9.  
  10. newLength = length + (spaceCount * 2);
  11. str[newLength] = '\0';
  12. for(i = length - 1; i >= 0; i--) {
  13. if (str[i] == ' ') {
  14. str[newLength - 1] = '0';
  15. str[newLength - 2] = '2';
  16. str[newLength - 3] = '%';
  17. newLength = newLength - 3;
  18. }
  19. else {
  20. str[newLength - 1] = str[i];
  21. newLength = newLength - 1;
  22. }
  23. }
  24. System.out.println(str);
  25. }
  26.  
  27. public static void main(String[] args) {
  28. Test tst = new Test();
  29. char[] ch = {'t','h','e',' ','d','o','g',' '};
  30. int length = 6;
  31. tst.replaceSpaces(ch,length);
  32. }
  33. }

我从replaceSpaces()调用得到的输出是:正在切割原始数组的最后一个字符.我一直在抓我的头,任何人都可以向我解释为什么算法是这样做的?

解决方法

你的长度是6,导致这个.通行长度为7,包括空格.
除此以外
  1. for(i = length - 1; i >= 0; i--) {

不会考虑最后一个字符.

猜你在找的Java相关文章