(Java)统计一个字符串中出现某个字母的次数(注意区分大小写)。String类中的相关方法

统计一个字符串中出现某个字母的次数(注意区分大小写)。String类中的相关方法
length( ):计算字符串长度,得到一个int型数值;
indexOf( ):在字符串中定位某个子串,并返回位置编号
substring( ):截取字符串中的一部分,并作为一个新字符串返回;
equals():比较两个String内容是否完全相同。

img

C++版:

#include <bits/stdc++.h>
using namespace std;

int main() 
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    string s;
    cin>>s;
    int a[53];//统计数量
    memset(a,0,sizeof(a));//初始化0
    for (int i=0;i<s.length();i++)
    {
        if (s[i]>='A' && s[i]<='Z') a[s[i]-64]++;//大写处理
        if (s[i]>='a' && s[i]<='z') a[s[i]-70]++;//小写处理,直接在大写后面
    }
    for (int i=1;i<=26;i++)
    {
        char c=i+64;
        cout<<c<<": "<<a[i]<<"次"<<endl;
    }
    for (int i=27;i<=52;i++)
    {
        char c=i+70;
        cout<<c<<": "<<a[i]<<"次"<<endl;
    }
    return 0;
}

首先用indexof得出该字符第一次出现的下标,记为a
将计数器+1
截取从a+1到字符串末尾,得到新的子串
如果某次indexof的返回值等于-1,停止操作
否则递归上述过程

用replaceall空字符替换这个字符。然后字符串前后长度做差就是次数


/**
     * 找出字符串中某个字符出现的次数
     *
     * @param str 字符串
     * @param c   字符
     * @return 出现次数
     */
    public static int count(String str, char c) {
        //把要找的字符全部去掉(替换成""),然后长度差就是出现的次数
        String str1 = str.replaceAll(String.valueOf(c), "");
        return str.length() - str1.length();
    }