string OJ题

目录

1.仅仅反转字母

2.字符串中的第一个唯一字符​编辑

3.字符串最后一个单词的长度

4.替换空格


1.仅仅反转字母

string OJ题_第1张图片

我们可以定义两个变量来表示数组首尾位置的有效字符的下标,然后分别从前和从后向中间遍历,只要遇到字母就停下来,利用库函数swap进行交换。

class Solution {
    //先写一个判断是字母的函数
  bool panduan(char ch)
  {
      if(ch>='a'&&ch<='z')
      return true;
      if(ch>='A'&&ch<='Z')
      return true;

      return false;
  }

public:
    string reverseOnlyLetters(string s) {
      
      size_t begin=0, end =s.size()-1;
      //这里是数组下标,所以要-1
      while(begin

2.字符串中的第一个唯一字符string OJ题_第2张图片

这个题就是找没有出现过字符的下标

class Solution {
public:
    int firstUniqChar(string s) {
  
    //出现的次数就统计出来了
        int count[26]={0};
        for(auto ch: s)
        {
            count[ch-'a']++;
        }
     
     for(int i = 0; i 

3.字符串最后一个单词的长度

string OJ题_第3张图片

#include 
#include 
using namespace std;

int main() {
     string str;

     getline(cin,str);//提取的时候不会被空格影响,只会被\0影响

     size_t pos =str.rfind(' ');
     if(pos!=string::npos) //pos返回失败是npos
     {
        cout<

这道题可以利用getline(不会被空格影响)来获取一行的字符串,然后通过rfind函数找到最后一个单词前面空格的位置,最后用size的大小(实际是最后一个的下一个位置)减去空格位置的下标,再减1,因为两个下标做差求的是区间的个数,要求区间中字符的个数需要多减去1.

4.替换空格

string OJ题_第4张图片

string OJ题_第5张图片

你可能感兴趣的:(面试题,算法,数据结构)