Java实现字符串倒序输出以及判断一个字符串中某个字符的出现次数


忽然想到笔试时经常出现的两个问题,碰到了只能写个大概的思路代码出来,自己都不能确定是不是可以运行,不是很复杂的内容,就随便写写了。

判断一个字符串中某个字符的出现次数

听到这个大家第一反应该是先把字符串转换为字符数组,然后使用foreach循环,在循环体内进行字符比对,代码如下:

public static void main(String[] args) {
        String str = "ABCDEFJ ABPA B";
        char searchChar = 'B';
        int count = 0;
        char[] charArray = str.toCharArray();
        for (char item : charArray) {
            if (item == searchChar) {
                count++;
            }
        }
        System.out.println("字符" + searchChar + "出现的次数为:" + count);
    }

但这个只能对比单个字符,如果是个多个字符组合的就没办法了,所以就需要用下面的方法:

public static void main(String[] args) {
        String str = "ABCDEFJ ABPA B";
        String searchChar = "AB";
        //方法A
        String newStr = str.replaceAll(searchChar, "");
        int count1 = (str.length() - newStr.length()) / searchChar.length();
        System.out.println("[方法A]字符" + searchChar + "出现的次数为:" + count1);

        //方法B
        int count2 = 0;
        while (str.contains(searchChar)){
            str = str.substring(str.indexOf(searchChar) + searchChar.length());
            count2 ++;
        }
        System.out.println("[方法B]字符" + searchChar + "出现的次数为:" + count2);
    }

方法A是最简洁的,计算长度差就ok了(面试官也应该喜欢这个答案吧)

字符串倒序输出

方法一:StringBuilder 和 StringBuffer里有一个自带reverse()方法,让字符序列被序列的相反部分替换,简单来说就是反序输出。
方法二:利用String类的toCharArray(),再通过foreach倒序拼接。

public static void main(String[] args) {
        String str = "123456789";
        System.out.println("反转前:" + str);
        //方法一
        String reverseStr = new StringBuilder(str).reverse().toString();
        System.out.println("【方法一】反转后" + reverseStr);
        
        //方法二
        char[] chars = str.toCharArray();
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = chars.length - 1; i >= 0 ; i--) {
            stringBuilder.append(chars[i]);
        }
        System.out.println("【方法二】反转后:" + stringBuilder.toString());
    }

最终输出结果
```

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值