题解 | #动态字符串#
动态字符串
https://www.nowcoder.com/practice/e2c51a6f126b41f9be403376c7adea15
解题思路:
(1)由于要从末尾开始,每3个字符插入一个逗号;所以可以用循环解决;
- 循环的开始条件是length-3,因为一开始最后一个元素是不需要插入逗号的
- 循环结束条件:i<=0时循环结束
- 迭代条件是:i-=3;通过移动i指针来确定插入数据的位置
(2)细节:
- String类并没有提供插入数据的方法,所以可以用StringBuffer或者StringBuilder来处理字符串
代码。StringBuffer是线程安全的,所以效率会比StringBuilder慢,StringBuilder是线程不安全的,会有线程同步的问题,也就是在多线程环境下,多个线程同一时刻访问数据,会导致数据的混乱,可以通过加线程同步锁解决;
- 对于StringBuffer的长度length,可以不需要我们自定义一个变量进行保存和维护,底层有count变量去记录字符串的长度,我们进行添加的时候是不会修改到我们保存的
i
变量,但是底层的count会变化
具体代码如下:
Scanner scanner = new Scanner(System.in); String str = scanner.next(); StringBuffer sb = new StringBuffer(str); //write your code here...... for(int i = str.length() - 3;i >= 0;i -= 3){ sb.insert(i,","); } System.out.println(sb);