欢迎来到我的博客

统计字符串中子串个数 包括重复和不重复 统计个子串中只出现一次的个数总和 和子串中出现不同种类的个数总和

统计字符串中子串个数 包括重复和不重复 统计个子串中只出现一次的个数总和 和子串中出现不同种类的个数总和

1.题目

统计字符串中子串个数 统计字符串中子串个数 包括重复和不重复 统计个子串中只出现一次的个数总和 和子串中出现不同种类的个数总和

例如 给定一个字符串 s = 'ababc'

则它的子串有
ab
aba
abab
ababc
b
ba
bab
babc
a
ab
abc
b
bc
c

一共15个子串

对于子串 ab 出现个数为 2(a ,b)

对于子串a b a 只出现一次个数为 1 (b)

对于子串abab 只出现一次个数为0(分别为 a b)

……

对于子串 ab 出现不同种类字符个数为 2(a ,b)

对于子串aba 出现不同种类字符个数为2 (a,b)

对于子串abab 出现不同种类字符个数为2(分别为 a b)

……

求输入一个字符串 分别统计子串只出现一个个数总和 和 出现不同种类个数总和

2.代码如下:

//求字符分值 意思就是输入一个字符串 然后对每一个子串统计只出现一次的字符 最终加起来就是总和

	  //例如 f('ab') = 2  f('aa') = 0
	int count = 0 ;//用于统计所有子串只出现一次字符的个数总和
	 Scanner sc = new Scanner(System.in);
	 System.out.print("请输入一个字符串:");
	 String s = sc.nextLine();
	 HashMap<Character,Integer> hs = new HashMap<>();
	 HashSet<String> h = new HashSet<>();
	 for(int i = 0 ; i<s.length();i++) {//遍历字符串
		 for(int j =i+1;j<= s.length();j++) {
			 System.out.println(s.substring(i,j));//我们可以输出所有的子串
			
			 String s1 = s.substring(i,j);//获取每一个子串
			 h.add(s1);//用hashSet()进行统计不重复的子串
			 char[] arr = s1.toCharArray();//我们把字符串转换成字符数组
			 for(char c:arr) {//对字符进行遍历  
				 if(!hs.containsKey(c)) {//判断map里面是否包含该字符的键值  如果没有我们就添加  
					 hs.put(c,1);//
					 count++;//对应的加一
				 } else {//如果存在那么我们要减一
					 count--;
					// continue;//统计子串中出现的种类的个数 例如:子串ab  则个数为 2  (a和b) 子串 abac  为3
				 }
			 }
			 for(char c:arr) {
				 hs.remove(c);//我们遍历完一个字符串我们就全部删除  然后 下一个字符串继续存入进去
			 }
		 }
	 }
	 System.out.println(count);
	 System.out.println(h.size());//输出set里面所有的字符串就是不重复的字符串
}

}

3.联系方式

由于我的水平有限 肯定这个做法不是最好的 但是 我才刚刚开始 所以各位大佬不要喷我 (哈哈) 这个适合小白学习 如果对你有帮助 记得赞一个呀 有什么问题也可以联系我

qq:2061302791

微信:xie2061302791

电话:15284524485

个人网站:https://xieyingpeng.github.io

Github:https://github.com/xieyingpeng/

博客园:https://www.cnblogs.com/Xieyingpengz

知乎:https://www.zhihu.com/people/nan-qiao-12-73

gitee:https://gitee.com/xie-yingpeng/project-1.git

bilibili:https://space.bilibili.com/617198338?share_medium=android&share_source=copy_link&bbid=XY2BDF522C748A159BE7DD354D6DFFB963728&ts=1612520115798![]

posted @ 2021-03-29 22:12  XieYingpeng  阅读(500)  评论(0编辑  收藏  举报