java – 编写一个方法来替换字符串中的所有空格
发布时间:2020-12-14 05:15:07 所属栏目:Java 来源:网络整理
导读:我有一个关于编程问题的问题,从第5版的Gayl Laakmann McDowell的“Cracking The Code Interview”开始. 问题是:写一个方法用”替换字符串中的所有空格.假设字符串在字符串末尾有足够的空间来保存其他字符,并且给出一个字符串的真正长度.我使用了图书代码,使
我有一个关于编程问题的问题,从第5版的Gayl Laakmann McDowell的“Cracking The Code Interview”开始.
问题是:写一个方法用”替换字符串中的所有空格.假设字符串在字符串末尾有足够的空间来保存其他字符,并且给出一个字符串的真正长度.我使用了图书代码,使用一个字符数组来实现Java中的解决方案(给出了Java Strings是不可变的): public class Test { public void replaceSpaces(char[] str,int length) { int spaceCount = 0,newLength = 0,i = 0; for(i = 0; i < length; i++) { if (str[i] == ' ') spaceCount++; } newLength = length + (spaceCount * 2); str[newLength] = ' '; for(i = length - 1; i >= 0; i--) { if (str[i] == ' ') { str[newLength - 1] = '0'; str[newLength - 2] = '2'; str[newLength - 3] = '%'; newLength = newLength - 3; } else { str[newLength - 1] = str[i]; newLength = newLength - 1; } } System.out.println(str); } public static void main(String[] args) { Test tst = new Test(); char[] ch = {'t','h','e',' ','d','o','g',' '}; int length = 6; tst.replaceSpaces(ch,length); } } 我从replaceSpaces()调用得到的输出是:正在切割原始数组的最后一个字符.我一直在抓我的头,任何人都可以向我解释为什么算法是这样做的? 解决方法
你的长度是6,导致这个.通行长度为7,包括空格.
除此以外 for(i = length - 1; i >= 0; i--) { 不会考虑最后一个字符. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |