字符串题集

  • 1. 删除公共字符
    • 题目描述
    • 题目分析
    • C++代码
  • 2. 合法括号序列判断
    • 题目描述
    • 题目分析
    • C++代码
  • 3. 两种排序方法
    • 题目描述
    • 题目分析
    • C++代码
  • 4. 密码强度等级
    • 题目描述
    • 题目分析
    • C++代码

1. 删除公共字符

题目描述

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

https://www.nowcoder.com/practice/f0db4c36573d459cae44ac90b90c6212?tpId=85&&tqId=29868&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

题目分析

  1. 将第二个字符串的字符都映射到一个hashtable数组中,用来判断一个字符在这个字符串。
  2. 判断一个字符在第二个字符串,不要使用删除,这样效率太低,因为每次删除都伴随数据挪动。这里可以考虑使用将不在字符添加到一个新字符串,最后返回新新字符串.

C++代码

#include<iostream>
#include<string>
using namespace std;
int main()
{string str1, str2;getline(cin,str1);//不能用cin输入,遇到空格会停止getline(cin,str2);int hash[256] = {0};//建立一个哈希表int len2 = str2.size();for(size_t i = 0; i < len2; i++){//记录str2里面的字符hash[str2[i]]++;}string ret;int len1 = str1.size();for(size_t i = 0; i < len1; i++){if(hash[str1[i]] == 0){ret = ret + str1[i];}}cout << ret << endl;return 0;
}

2. 合法括号序列判断

题目描述

对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。

给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。

https://www.nowcoder.com/practice/d8acfa0619814b2d98f12c071aef20d4?tpId=8&&tqId=11039&rp=1&ru=/activity/oj&qru=/ta/cracking-the-coding-interview/question-ranking

题目分析

用栈结构实现,栈中存放左括号,当遇到右括号之后,检查栈中是否有左括号,如果有则出栈,如果没有,则说明不匹配。

C++代码

class Parenthesis {public:bool chkParenthesis(string A, int n) {// write code herestack<char> st;for(auto e : A){if(e == '('){st.push(e);}else if(e == ')'){if(st.empty() || st.top() != '('){return false;}else{st.pop();}}else{return false;}}return true;}
};

3. 两种排序方法

题目描述

考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如:
“car” < “carriage” < “cats” < "doggies < “koala”
2.根据字符串的长度排序。例如:
“car” < “cats” < “koala” < “doggies” < “carriage”
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。

https://www.nowcoder.com/practice/839f681bf36c486fbcc5fcb977ffe432?tpId=85&&tqId=29844&rp=1&ru=/activity/oj&qru=/ta/2017test/question-ranking

题目分析

思路很简单,将接受的字符串都放到vector容器中,利用string的operator>=运算符重载来按ascii比较字符串,利用string的size来比较字符串的长度.

C++代码

#include <iostream>
#include <string>
#include <vector>
using namespace std;int main()
{int n;cin>>n;vector<string> v;v.resize(n);for(auto& str : v)cin>>str;bool flag1= true, flag2 = true;for(size_t i = 1; i < v.size(); i++){if(v[i-1] >= v[i]){flag1 = false;break;}}for(size_t i = 1; i < v.size(); i++){if(v[i-1].size() >= v[i].size()){flag2 = false;break;}}if(flag1 && flag2){cout<< "both" << endl;}else if(flag1 && !flag2){cout << "lexicographically" << endl;}else if(!flag1 && flag2){cout << "lengths" << endl;}else if(!flag1 && !flag2){cout << "none" << endl;}return 0;
}

4. 密码强度等级

题目描述

密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

https://www.nowcoder.com/practice/52d382c2a7164767bca2064c1c9d5361?tpId=37&&tqId=21310&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking

题目分析

这里对于不同种类的字符得分不同,同学们可以现对每一个维度进行单独判断,即对于长度,字母,数字,符号单独判断,最后把所有的单项值根据题目要求相加,输出对应的安全级别.

C++代码

#include <iostream>
#include <string>
using namespace std;int numChar(string str)
{int big = 0, small = 0;for(int i = 0; i < str.size(); i++){if(str[i] >= 65 && str[i] <= 90){big++;}else if(str[i] >= 97 && str[i] <= 122){small++;}}if((big + small)==0){return 0;}else if(((big == 0) && !(small == 0)) || (!(big == 0) && (small == 0))){return 10;}else if(big > 0 && small > 0){return 20;}return 0;}int numNumer(string str)
{int count = 0;for(int i = 0; i < str.size(); i++){if(str[i] - '0' >= 0 && str[i] - '0' <=9){count++;}}if(count == 0){return 0;}else if(count == 1){return 10;}elsereturn 20;
}int numSymbal(string str)
{int num = 0;for(int i = 0; i < str.size(); i++){if(!(str[i] >= 65 && str[i] <= 90)&& !(str[i] >= 97 && str[i] <= 122)&& !(str[i] - '0' >= 0 && str[i] - '0' <= 9)){num++;}}if(num == 0){return 0;}else if(num == 1){return 10;}else {return 25;}
}int main()
{string str;while(cin >> str){int sum = 0, sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0 ,extra = 0;int len = str.size();if (len <= 4)sum1 = 5;else if (len >= 8)sum1 = 25;elsesum1 = 10;sum2 = numChar(str);sum3 = numNumer(str);sum4 = numSymbal(str);if((sum2 > 0) && (sum3 > 0) && (sum4 > 0)){if(sum2 == 10){extra = 3;}else{extra = 5;}}else if((sum2 > 0) && (sum3 > 0) && (sum4 == 0)){extra = 2;}sum = sum1 + sum2 +sum3 +sum4 + extra;if(sum >= 90){cout << "VERY_SECURE" << endl;}else if(sum >= 80){cout << "SECURE" <<endl;}else if(sum >= 70){cout << "VERY_STRONG" << endl;}else if(sum >= 60){cout << "STRONG" <<endl;}else if(sum >= 50){cout << "AVERAGE" <<endl;}else if(sum >= 25){cout << "WEAK" <<endl;}else cout << "VERY_WEAK"<<endl;}return 0;
}

【字符串2】(删除公共字符、合法括号序列判断、两种排序方法、密码强度等级)相关推荐

  1. 刷题日记【第四篇】-笔试必刷题【Fibonacci数列+合法括号序列判断+两种排序方法+求最小公倍数】

    目录 选择题模块 1. 以下对继承的描述错误的是(A) 2. 在Java中,一个类(B) 3. 以下不是Object 类的方法的是(D) 4. Test.main() 函数执行后的输出是(D) 编程题 ...

  2. 牛客网--关于合法括号序列判断

    牛客网--关于合法括号序列判断 题目描述 代码 题目描述 对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串 ...

  3. 实现一个算法,确定一个字符串 s 的所有字符是否全都不同(两种方法)

    题目: 实现一个算法,确定一个字符串 s 的所有字符是否全都不同. 示例 1: 输入: s = "leetcode" 输出: false 示例 2: 输入: s = "a ...

  4. 编程题——合法括号序列

    编程题--合法括号序列 题目描述: 对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串. 给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串. 示例1: 输入 ( ...

  5. [Jobdu] 题目1337:寻找最长合法括号序列

    题目描述: 给你一个长度为N的,由'('和')'组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...

  6. 组队竞赛删除公共字符

    1.组队竞赛 题目描述: 链接:组队竞赛_牛客笔试题_牛客网 来源:牛客网 牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍, ...

  7. 【牛客网】—— 删除公共字符三种解法

    删除公共字符 题目描述 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之 ...

  8. 回文字符串的两种判别方法(c语言)

    C语言判别回文字符的两种简单方法 文章目录 C语言判别回文字符的两种简单方法 一.回文字符串的概念 二.介绍两种判别回文字符串的方法 1.将需要判别的字符串倒序排列再与原字符串对比 2. 通过指针锁定 ...

  9. 搜索计算机无法输入法,Windows10左下角搜索框无法输入字符的两种解决方法

    用户在使用win10系统过程中,经常会使用到其自带的搜索功能.不过,近来有些用户却发现电脑左下角的搜索框突然无法输入字符.那这该怎么办呢?我们最常用的方法是重启电脑,让win10的搜索服务重新运行.下 ...

最新文章

  1. 卷积网络基础知识---Group Convolution分组卷积
  2. Git之不明觉厉11-利其器source tree
  3. VTK:图片之ImageSinusoidSource
  4. python创建不可变集合_python不可变集合是什么
  5. 收藏列表放入MySQL还是redis_mysql导入redis
  6. 讲讲你理解的服务治理
  7. QTP统计页面加载时间
  8. pycharm 改成中文亲测好用
  9. 电脑无故关机,出现提示:从异常关机中恢复 bluescreen.........
  10. 研究生科研素养提升的测试题
  11. RF自动化测试系列-第三篇 测试数据
  12. JBoss 中间件漏洞
  13. 超强指南!1分钟学会给电脑磁盘分区!
  14. Ubuntu 16.04 下 旋转显示器屏幕 竖屏显示
  15. 电商不仅仅有CRUD——0基础了解电商中的引流工具谷歌GMC
  16. Android实战简易教程-第五十枪(工具类的测试)
  17. IDEA中快速添加自己自定义的方法方法,想要什么快捷方法都行
  18. 自主品牌的新合资之路
  19. 黑莓9000和9900哪个好_黑莓9900评测
  20. 致远(用友)OA或M1 漏洞复现

热门文章

  1. RT-Thread串口设备驱动框架
  2. 批量查询谷歌PR权重的方法有哪些?是什么影响着谷歌PR值?
  3. 8086标志寄存器(Flag Register)
  4. 江苏省常州市谷歌高清卫星地图下载
  5. 7.Python 文件I/O
  6. facebook有哪些信息_如何让人们不知道您在Facebook上阅读了他们的信息
  7. 由一次安全扫描引发的思考:如何保障 api 接口的安全性?
  8. 时间机器能成为现实么?
  9. 文件管理系统(操作系统)——9张思维导图
  10. 汇编语言——王爽版 总结