字符串替换
来源:互联网 发布:淘宝每日好店怎么参加 编辑:程序博客网 时间:2024/06/06 08:53
一、问题
函数声明如下:char[] strreplace(char[] str, char[] sub,char[] rep)
其中str为原字符串,sub为待被替换的子串。为简单起见, 假定字符串sub和rep长度一样
二、源代码
char[] strreplace(char[] str, char[] sub, char[] rep) {int i = 0;while (i < str.length) {boolean flag = true;int curIndex = i;int j = 0;while ( j != sub.length)// 没有超过sub的最后一位{if(sub[j++] != str[curIndex++])// 第j个sub索引 匹配str{flag=false;break;}}if (flag == true) {replaceAt(i, str, rep);i = curIndex - 1;// curIndex-1之前表示未匹配的下一位,-1表示匹配的最后一个,//之所以煞费苦心的-1,是因为无论如何循环都会对i加1flag=false;}i++;}return str;}void replaceAt(int index, char[] str, char[] rep) {for (int j = 0, i = index; i <index + rep.length; i++) {str[i] = rep[j++];}}
三、解析
问题的关键在于字符串的匹配,这里的匹配方法使用了最基本的方法。唯一的一个聪明点的操作是,与每次移动一位相比,增加了匹配成功时额外操作——如果匹配成功,就从匹配之后的位置再次查找。关于字符串的匹配有KMP等著名算法可以另行参考。
0 0
- 字符串替换
- 字符串替换
- 替换字符串
- 字符串替换
- 替换字符串
- 字符串替换
- 字符串替换
- 字符串替换
- 替换字符串
- 字符串替换
- 字符串替换
- 字符串替换
- 字符串替换
- 字符串替换
- 替换字符串
- 字符串替换
- 字符串替换
- 字符串替换
- 预编译布局
- Kafka 学习笔记(十)之consumer写入file
- Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别
- 动态代理工具类
- jsp中textarea中输入文本存入数据库,然后按照输入的格式显示
- 字符串替换
- Error 0xc000007b while Running SqlTools
- [Leetcode 22, Medium] Generate Parentheses
- 记2015上交软件优才夏令营
- [Leetcode 52, Hard] N Queens II
- 几个java小问题
- 集合简单总结
- ListView的HeaderView
- 网页屏蔽Backspace事件,输入框不屏蔽