当前位置: 首页 > wzjs >正文

香港服务器做网站实时热搜榜榜单

香港服务器做网站,实时热搜榜榜单,易经网站建设应用,wordpress虚拟模板目录 题目算法标签: 模拟, 字符串操作思路代码*后续 A C AC AC代码 题目 一段英语短文的内容记录于 lines 中,每行输入 lines[i] 仅包含 a-z , . , -,即英文小写字母,空格,逗号,句号和续行符。 请统计单词数量&#…

题目

一段英语短文的内容记录于 lines 中,每行输入 lines[i] 仅包含 a-z , . , -,即英文小写字母,空格,逗号,句号和续行符。

请统计单词数量:

  • - 表示续行符(仅会出现在行尾,且不会出现在最后一行)
  • 对于含有续行符的行:将下一行的首个非空字符起的余下部分,拼接在当前行续行符左侧的字符后;
  • 对于不含续行符的行:与下一行是分隔的,相当于有一个单词分隔符。

单词:全部由字母组成

其它均为单词分隔符:包括一个或多个连续的空格、逗号、句号 。

输入

  • 1 <= lines.length <= 25
  • 1 <= lines[i].length <= 80

输出

一个整数,表示所统计的单词数量

算法标签: 模拟, 字符串操作

思路

整体算法分为三步

  1. 将带有续行符的单词进行合并
  2. 将字符串中的其他分隔符替换为空格, 并将字符串数组合并为一个单词字符串
  3. 将处理完的字符串放入 i s t r i n g s t r e a m istringstream istringstream进行流式计数

整体算法时间复杂度是 O ( n ) O(n) O(n), 但是边界情况很多, 实现起来比较复杂

代码

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cctype>using namespace std;class Solution {
public:vector<string> strs;void merge(vector<string> &ans) {int i = 0, n = strs.size();while (i < n) {string s = strs[i];i++;//对于当前字符串合并所有可能的字符串while (true) {if (strs.empty() || s.back() != '-' || i >= n) break;//去除连接符s.pop_back();string ne_s = strs[i];int pos = ne_s.find_first_not_of(' ');if (pos != string::npos) s += ne_s.substr(pos);else s += ne_s;i++;}ans.push_back(s);}}void handle(string &s, vector<string> &vec) {for (string &tmp : vec) {bool pre = true;for (char c : tmp) {if (isalpha(c)) {s += c;pre = false;}else if (!pre) {s += ' ';pre = true;}}if (!s.empty() && !pre) s += ' ';}}int GetWordsCnt(const vector<string> &lines) {strs = lines;vector<string> vec;merge(vec);string s;//执行步骤2handle(s, vec);istringstream is(s);string tmp;int ans = 0;while (is >> tmp) ans++;return ans;}
};

*后续 A C AC AC代码

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <cctype>using namespace std;class Solution {
public:vector<string> strs;void merge(vector<string> &ans) {int i = 0, n = strs.size();while (i < n) {string s = strs[i];i++;while (true) {if (strs.empty() || s.back() != '-' || i >= n) break;s.pop_back();string &ne_s = strs[i];int pos = ne_s.find_first_not_of(' ');if (pos != string::npos) s += ne_s.substr(pos);else s += ne_s;i++;}ans.push_back(s);}}void handle(string &s, vector<string> &vec) {for (string &tmp : vec) {//记录前一个位置是否是空格bool pre = true;for (char c : tmp) {if (isalpha(c)) {s += c;pre = false;}//当前位置不是字母并且前一个位置不是空格说明是其他的分割符需要转化为空格并且标记当前位置是空格else if (!pre) {s += ' ';pre = true;}}//字符串不为空并且前面前面没有空格if (!s.empty() && !pre) s += ' ';}}int GetWordsCnt(const vector<string> &lines) {strs = lines;vector<string> vec;merge(vec);string s;handle(s, vec);istringstream is(s);string tmp;int ans = 0;while (is >> tmp) ans++;return ans;}
};
http://www.dtcms.com/wzjs/433250.html

相关文章:

  • 玉林网站制作成都网站维护
  • 网站空间怎么申请网上营销方法
  • 大连网站关键词推广优化大师下载
  • 做网站阜新市场调查报告
  • 加强统战门户网站建设网站建设及推广优化
  • 山东大源建设集团网站搜索引擎优化核心
  • b2c网站存在问题网站建设公司哪家好?该如何选择
  • google下载windows优化大师可以卸载吗
  • 贵阳建设工程招投标网站最简单的网页制作
  • 网站建设推广服务磁力天堂
  • 平台建站关键词优化seo多少钱一年
  • 周浦高端网站建设公司网络营销的优势与不足
  • 武进网站建设好么网址收录网站
  • 福建金融公司网站建设临沂百度seo
  • 虚拟主机手机网站国际网络销售平台有哪些
  • 专业做app下载网站有哪些企业内训课程
  • 宁波seo网络推广价格详情汕头seo网络推广
  • 专业网站建设搭建seo合作
  • 电子商务安全问题 网站权限管理搜索引擎营销分析
  • 太原顶呱呱做网站地址电话yahoo搜索
  • 淘宝客网站建设教程博客网站登录
  • 上海网站建设 建站猫网站优化外包价格
  • 做网站项目团队口号系统优化的方法
  • 绵阳定制网站建设广州网站推广服务
  • 电子代加工东莞网站建设品牌推广活动策划案例
  • 宁波网站建设科技有限公司湖南正规关键词优化首选
  • 微信制作网站设计网站优化课程
  • 没有ipc备案的网站放单平台大全app
  • 将网站保存怎么做torrentkitty搜索引擎
  • 深圳购物网站建设公司中国十大关键词