字符串的题大部分都很水,但是一些企业机试经常出现(比如华为)
另外不水的题常常和DP/贪心/回溯连在一起比较难,还是多练吧
后面用Golang提交试试水,最近在学Golang,非常有意思
目录
LeetCode面试题58-II.左旋转字符串
水题,溜了
class Solution {
public:
string reverseLeftWords(string s, int n) {
string s1;
for(int i=n;i<s.size();i++)
s1.push_back(s[i]);
for(int i=0;i<n;i++)
s1.push_back(s[i]);
return s1;
}
};
LeetCode1108.IP地址无效化
咳咳咳,福利题
class Solution {
public:
string defangIPaddr(string address) {
string s;
for(int i=0;i<address.size();i++){
if(address[i]!='.')
s.push_back(address[i]);
else
s.append("[.]");
}
return s;
}
};
LeetCode面试题01.06.字符串压缩
一种笨拙的写法:
class Solution {
public:
string compressString(string S) {
string s;
for(int i=0;i<S.size();i++){
char a = S[i];
int num = 1;
if(a!=S[i+1]){
s.push_back(a);
s.append(to_string(num));
}else{
while(a==S[++i])
num++;
s.push_back(a);
s.append(to_string(num));
i--;
}
}
if(s.size()<S.size())
return s;
return S;
}
};
LeetCode657.机器人能否返回原点
第一次用Golang提交,激动哈哈
func judgeCircle(moves string) bool {
var x,y int;//golang会自动初始化为0
for i:=0;i<len(moves);i++{
if moves[i]=='R'{
x++;
}
if moves[i]=='L'{
x--;
}
if moves[i]=='U'{
y++;
}
if moves[i]=='D'{
y--;
}
}
if x==0&&y==0{
return true;
}
return false;
}
LeetCode.804.唯一摩尔斯密码词
用C++ set处理,挺快的
class Solution {
public:
int uniqueMorseRepresentations(vector<string>& words) {
string a[26]={".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
set<string> se;
for(int i=0;i<words.size();i++){
string s="";
for(int j=0;j<words[i].size();j++){
int n = words[i][j]-'a';
s+=a[n];
}
se.insert(s);
}
return se.size();
}
};
Golang用map也挺爽,就是还不太熟
func uniqueMorseRepresentations(words []string) int {
a :=[]string {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."}
m := map[string]int{}
for _,v := range words{
str := ""
for _,v1 := range v{
str+=a[v1-'a']
}
m[str]=1
}
return len(m)
}
LeetCode709.转换成小写字母
一句Goland偷懒哈哈
Go语言的string模块包含了ToLower和ToUpper函数,用于将字符串转换成小写和大写
func toLowerCase(str string) string {
return strings.ToLower(str)
}
LeetCode1221.分割平衡字符串
贪心即可
C++
class Solution {
public:
int balancedStringSplit(string s) {
int Rnum=0,Lnum=0;
int num = 0;
for(int i=0;i<s.size();i++){
if(s[i]=='R')
Rnum++;//记录R出现的次数
else
Lnum++;//记录L出现的次数
if(Rnum!=0&&Lnum!=0&&Rnum==Lnum){//恰好分割时,归零并计数
Rnum=Lnum=0;
num++;
}
}
return num;
}
};
Golang
func balancedStringSplit(s string) int {
Rnum := 0
Lnum := 0
num := 0
for _,value := range s{
if value=='R'{
Rnum++
}else{
Lnum++
}
if Rnum!=0&&Lnum!=0&&Lnum==Rnum{
Rnum=0
Lnum=0
num++
}
}
return num
}
后记: 最开始写的时候是三月中下旬,然后咕咕咕咕到现在才搞出来,人类的本质是什么?哈哈哈哈