需求:给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)

如:
 a 不替换
 b 不替换
 ab 不替换
 ba 不替换
 aba 不替换
 aab 替换为 bbb
 baa 替换为 bbb
 abaabaaabaa 替换为 abbbbaaabbb 中间三个a不作替换

源代码如下ReplaceTest.java:

package com.test.zhipengs;/*** A Question* 给定一个字符串str,将str中连续两个字符为a的字符替换为b * 如:*  a 不替换*  b 不替换 *  ab 不替换*  ba 不替换*  aba 不替换 *  aab 替换为 bbb *  baa 替换为 bbb *  abaabaaabaa 替换为 abbbbaaabbb 中间三个a不作替换* * @author zhipengs* */
public class ReplaceTest {/*** main方法* @param args*/public static void main(String[] args) {// 测试替换方法String str1 = "aachaadaaacaaaaaaaefgaa";System.out.println("-------------------------------");System.out.println("替换前:" + str1);System.out.println("替换后:" + replace(str1));String str2 = "aaachaadaaacaaaaaaaefgaaa";System.out.println("-------------------------------");System.out.println("替换前:" + str2);System.out.println("替换后:" + replace(str2));String str3 = "ajaayaaakaac";System.out.println("-------------------------------");System.out.println("替换前:" + str3);System.out.println("替换后:" + replace(str3));String str4 = "a";System.out.println("-------------------------------");System.out.println("替换前:" + str4);System.out.println("替换后:" + replace(str4));String str5 = "b";System.out.println("-------------------------------");System.out.println("替换前:" + str5);System.out.println("替换后:" + replace(str5));String str6 = "ab";System.out.println("-------------------------------");System.out.println("替换前:" + str6);System.out.println("替换后:" + replace(str6));String str7 = "ba";System.out.println("-------------------------------");System.out.println("替换前:" + str7);System.out.println("替换后:" + replace(str7));String str8 = "aa";System.out.println("-------------------------------");System.out.println("替换前:" + str8);System.out.println("替换后:" + replace(str8));String str9 = "aaa";System.out.println("-------------------------------");System.out.println("替换前:" + str9);System.out.println("替换后:" + replace(str9));String str10 = "kjgnknk";System.out.println("-------------------------------");System.out.println("替换前:" + str10);System.out.println("替换后:" + replace(str10));}/*** 具体替换方法* @param str* @return String*/private static String replace(String str) {int len = str.length();if (null == str || len <= 1) {// str为null或只有一个时直接返回return str;}char[] charArray = str.toCharArray();// 将str转为字符数组int num = 0;// 记录字符 a 的个数 for (int i = 0; i < len; i++) {if ('a' == str.charAt(i)) {num++;} else {num = 0;// 一旦第i个字符不是 a 则num值立即清零
            }if ((num == 2 && (i + 1) < len && 'a' != charArray[i + 1])|| (num == 2 && (i + 1) == len)) {// 下一个字符存在时num值为2且下一个字符不是a;遍历到字符串末尾即没有下一个字符了时num值为2即可 charArray[i - 1] = 'b';// 把当前位置和上一个位置的字符a替换为b charArray[i] = 'b';}}return new String(charArray);// 返回结果
    }}

测试结果输出如下:

-------------------------------
替换前:aachaadaaacaaaaaaaefgaa
替换后:bbchbbdaaacaaaaaaaefgbb
-------------------------------
替换前:aaachaadaaacaaaaaaaefgaaa
替换后:aaachbbdaaacaaaaaaaefgaaa
-------------------------------
替换前:ajaayaaakaac
替换后:ajbbyaaakbbc
-------------------------------
替换前:a
替换后:a
-------------------------------
替换前:b
替换后:b
-------------------------------
替换前:ab
替换后:ab
-------------------------------
替换前:ba
替换后:ba
-------------------------------
替换前:aa
替换后:bb
-------------------------------
替换前:aaa
替换后:aaa
-------------------------------
替换前:kjgnknk
替换后:kjgnknk

总结:一支笔一页白纸总是写不出类似的代码,但用键盘+IDE可以敲出来,这是不熟练的原因吗?~~

转载于:https://www.cnblogs.com/once/p/3690102.html

给定一个字符串str,将str中连续两个字符为a的字符替换为b(一个或连续超过多个字符a则不替换)...相关推荐

  1. mysql 比较一个字符串_比较MySQL中的两个字符串?

    为了比较两个数字字符串,让我们首先创建一个表.以下是查询-mysql> create table compareTwoStringsDemo -> ( -> Id int NOT N ...

  2. 131-从键盘输入一个字符串,将其中的小写字母全部换成大写字母,然后输出到一个磁盘文件

    //131-从键盘输入一个字符串,将其中的小写字母全部换成大写字母,然后输出到一个磁盘文件"test"中保存.输入的字符串以!结束//这道题对我来说最重要的就是ch=getchar ...

  3. 【编程题目】输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。...

    第 14 题(数组): 题目:输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字. 要求时间复杂度是 O(n).如果有多对数字的和等于输入的数字,输出任意 ...

  4. 输入一个已经按升序排序过的数组和一个数字, 在数组中查找两个数,使得它们的和正好是输入的那个数字。

    原文转自:http://blog.csdn.net/u013322907/article/details/38300711 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们 ...

  5. java输入一个字符串_在java中如何用键盘输入一个数,字符,字符串

    一,利用 Scanner 实现从键盘读入integer或float 型数据 1 import java.util.*;2 public classtest {3 public static voidm ...

  6. php找出字符串不同地方,PHP中比较两个字符串找出第一个不同字符位置例子

    PHP中比较两个字符串找出第一个不同字符位置例子 一般的做法就会这样: 复制代码 代码如下: for ($offset = 0; $offset < $length; ++$offset) { ...

  7. c语言如何扫描一个字符串,如何在C中对单个字符进行扫描

    侃侃无极 首先,避免scanf()..使用它是不值得的痛苦.见:为什么大家都说不要用扫描呢?我应该用什么代替?中使用空白字符.scanf()如果需要读取更多的输入,会忽略输入流中留下的任意数量的空格字 ...

  8. 判断一个字符串是否在一个数组中

    直接代码: static void Main(string[] args){string[] array = { "C#", "Asp.net", " ...

  9. java判断两个字符串是否相等_JavaScript中判断两个字符串是否相等的方法

    先将用户的输入值全部转换为大写(或小写),然后再行比较: 大家可以先参考实例: var name = document.form1.txtUserName.value.toLowerCase(); i ...

  10. 输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]...

    输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中.例如,123放在a[0],456放在a[1]-统计 ...

最新文章

  1. 一次项目管理交流会总结
  2. 九、多表模型创建,一对一,一对多,基于对像的多表模型等
  3. 递归--递推之组合数
  4. Rabbit-音乐欣赏
  5. 工具类篇——时间处理Calendar类
  6. linux查看及修改文件权限以及相关
  7. 优化算法——粒子群算法(PSO)
  8. 我用Java框架Guava解决了空指针异常问题
  9. 最全的BAT大厂面试题整理
  10. python异步查询数据库_Python的Tornado框架实现异步非阻塞访问数据库的示例
  11. 【Tableau 图表大全21】之箱型图(盒须图)
  12. 多轴控制玻璃行业程序 相机 ST LAD SFC
  13. Data Masking-克隆“真实”的假数据
  14. javascript学习笔记——Ajax、跨资源共享(CORS)、图像Ping、JSONP、Comet、Web Socket
  15. 使用ls / 命令卡死,或者df -h 查看卡死解决办法
  16. 数字电路47( 模数转换器的工作原理)
  17. [INS-06006]AIX7.2 安装19c互信通不过
  18. java毕业设计校园考勤系统mybatis+源码+调试部署+系统+数据库+lw
  19. 03.MAC地址_IP地址_子网掩码
  20. zigbee CC2530 系列教程 13 烟雾传感器实验

热门文章

  1. fork()函数_UNIX环境高级编程(APUE)系列学习第8章-2 exit系列函数与wait系列函数...
  2. 【算法】斐波那契(黄金分割法) 查找算法
  3. 【Elasticsearch】倒排索引原理
  4. 【ElasticSearch】Es 源码之 AutoFollowCoordinator 源码解读
  5. 【ElasticSearch】Es 源码之 MetadataIndexUpgradeService 源码解读
  6. 【clickhouse】Code: 135. DB::Exception: Received from xxx:9000. DB::Exception: Indices in strings are
  7. 【Spring】Spring 自定义scope
  8. 【Spring】SpringBoot 如何使用JMX
  9. CheckstyleException: cannot initialize module TreeWalker - TreeWalker is not allowed as a
  10. 【kafka】查看消费组报错 Executing consumer group command failed due to Request METADATA failed on brokers Lis