华为机试 频率最高 频率最低的 单词
2013-05-05 14:02
246 查看
#include "stdafx.h" #include <iostream> #include<vector> using namespace std; typedef struct Node{ int length; //单词的长度 int count; //单词出现的次数 char word[32]; //内存对齐,30与32占的空间相同 }; void insert( vector<Node> &vNode, Node & node ) { for ( int i = 0; i < vNode.size(); ++i ) { if ( vNode[i].length == node.length ) //只有长度相同才进行比较 { if ( !strcmp( vNode[i].word, node.word ) ) { vNode[i].count++; return; } } } node.count = 1; vNode.push_back( node ); } void count( char *strSrc, vector<Node> &vNode ) { char tmpStr[32]; int i = 0; char *pIndex = --strSrc; while ( *pIndex++ ) { if ( *pIndex == ' ' || *pIndex == ',' || *pIndex == '\0' ) //找到单词的结尾 { tmpStr[i] = '\0'; i = 0; int tmpLen = strlen( tmpStr ); if ( tmpLen < 1 ) continue; Node tmpNode; tmpNode.length = tmpLen; strcpy( tmpNode.word, tmpStr ); insert( vNode, tmpNode ); if ( *pIndex == '\0' ) return; } else { if( *pIndex>= 'a' && *pIndex <= 'z' ) tmpStr[i++] = *pIndex; else if( *pIndex>= 'A' && *pIndex <= 'Z' ) tmpStr[i++] = *pIndex + 32; } } } int main() { char input[] = "hello, world world i Hello heLLo"; vector<Node> vNode; count( input, vNode); for( int i = 0; i <vNode.size(); ++i ) cout<<vNode[i].count<<" "<<vNode[i].word<<endl; return 0; }
相关文章推荐
- 输入一段英文文本,用程序统计出现频率最高和最低的两个单词;
- 华为机试-最高频率子串
- 华为机试——最高出现频率字符
- 统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数
- 华为机试:倒置英文句子中单词的字母顺序
- Java - 华为机试训练 - 字符串最后一个单词的长度
- 统计一TXT文档中单词出现频率,输出频率最高的10个单词
- 编程珠玑:单词频率最高选取
- 华为机试在线训练-牛客网(3)字符串最后一个单词的长度
- 分析一个文本文件中各个单词出现的频率,把频率最高的10个词打印出来
- 华为机试 单词查找、排序、去重
- 华为机试,字符串最后一个单词的长度
- 一篇文章中求出现频率最高的10个单词(C++实现tanglanting)
- 读入文本,找出出现频率最高的10个单词~~~~
- 华为西安2015实习生机试题基础题--------求输入的五个数字中频率最高的,输出数字和次数
- [华为机试练习题]19.字符串最后一个单词的长度
- 华为机试——字符串单词首字母大写
- 华为机试:过滤重复单词
- 牛客网华为机试在线训练字符串最后一个单词的长度
- 华为机试——查找兄弟单词