python中如何统计字符串中各个字母的个数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中如何统计字符串中各个字母的个数相关的知识,希望对你有一定的参考价值。
用字符串count函数计算出现次数,防止重复,可以用字典来搜集结果:
运行结果:
vowel = ['a', 'e', 'i','o', 'u']
str = sys.argv[1]
sum = 0
for i in str:
if i in vowel:
sum+=1
print(sum)
使用方法:
将上面代码放入文件,例如test.py文件中
如果是linux或mac下给test.py加上可执行权限 //chmod +x test.py
执行格式: python test.py 字符串: 参考技术B 可以直接用collections里的Counter()
闲谈如何统计字符串中出现最多的字母与个数
前言
闲来无事,穷折腾。最近我朋友在找工作,遇到一些面试题,或者遇到一些问题会及时跟我讨论。我则作为他的幕后军师,为他出谋划策。接下来我分享给大家一道简单的面试题。
题目
统计字符串中出现最多的字母与个数?
分析
1、验证数据是否字符串
2、字符串转换为数组
3、统计字符串出现的次数
例:
var str = 'aaaadddddssssgdhssssbbbbbuuuwmopqlsabcfwsqdghgukssuyutsudddddsasss';
写一个函数专门处理这个事情。
/**
*
* 检查字符串中出现次数最多的那个
*
*/
function maximum(s) {
//【第一步】验证合法性
if (typeof s !== 'string') {
throw ('s is string');
}
//【第二步】转换为数组
var array = s.split("");
//【第三步】找出最多的字母
//这一步最关键
}
其实最重要的是第三步,看你站在什么样的思路去找对应的字母与其个数。大多数人会选择使用两个循环进行处理。
代码如下:
/**
* 检查字符串中出现次数最多的那个
*/
function maximum(s) {
if (typeof s !== "string") {
throw "s is string";
}
var array = s.split(""),
l = array.length,
obj = {},
ismaxObj = {
max: 0,
val: ""
},
arrayVal = "";
while (l--) {
arrayVal = array[l];
if (!obj[arrayVal]) {
obj[arrayVal] = [];
}
obj[arrayVal].push(arrayVal);
if (ismaxObj.max != 0) {
if (obj[arrayVal].length > ismaxObj.max) {
ismaxObj.max = obj[arrayVal].length;
ismaxObj.val = array[l];
}
} else {
ismaxObj.max = obj[arrayVal].length;
ismaxObj.val = arrayVal;
}
}
//console.log(array);
console.log(ismaxObj);//出现次数最多的字母与次数
console.log(obj);//数据重组直观看到数据分布
}
maximum(
"aaaadddddsgdhssssbbbbbuuupqlsabcfwsqdghgukssuyutsudddddsasss,ewfd,null,undefind.?Qzadsdvsf/\\[;ll;,lw"
);
结果如图所示:
追问
如果面试官追问,如何确定最多的字母的第一个位置与最后一个位置?
其实我们在push的时候就可以把这个数据的位置存起来,稍加改动即可求出。
/**
* 检查字符串中出现次数最多的那个
*/
function maximum(s) {
if (typeof s !== "string") {
throw "s is string";
}
var array = s.split(""),
ll = array.length,
obj = {},
ismaxObj = {
max: 0,
val: ""
},
arrayVal = "";
for (var l=0;l<ll;l++) {
arrayVal = array[l];
if (!obj[arrayVal]) {
obj[arrayVal] = [];
}
obj[arrayVal].push(arrayVal+'-'+l);
if (ismaxObj.max != 0) {
if (obj[arrayVal].length > ismaxObj.max) {
ismaxObj.max = obj[arrayVal].length;
ismaxObj.val = array[l];
}
} else {
ismaxObj.max = obj[arrayVal].length;
ismaxObj.val = arrayVal;
}
}
console.log(obj[ismaxObj.val][0],obj[ismaxObj.val][obj[ismaxObj.val].length-1]);//最多的字母的第一个位置与最后一个位置
console.log(ismaxObj);//出现次数最多的字母与次数
console.log(obj);//数据重组直观看到数据分布
}
这是我给出的方案,也许还不是最优质的。望各位大佬指正。
总结
其实对于面试来说最重要的是考察面试者处理问题的逻辑思路,有些人能够解决问题,有些人能够以最优质的方案解决问题。前者是干活的人,后者是干好活的人。
以上是关于python中如何统计字符串中各个字母的个数的主要内容,如果未能解决你的问题,请参考以下文章