【无标题】Leetcode题

  1. 无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

示例 1:

输入: s = "abcabcbb"

输出: 3

解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3

示例 2:

输入: s = "bbbbb"

输出: 1

解释: 因为无重复字符的最长子串是 "b",所以其长度为 1

示例 3:

输入: s = "pwwkew"

输出: 3

解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3

     请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。

//哈希表

int lengthOfLongestSubstring(char* s) {

    int len = strlen(s);

    if (len==0)

        return 0;

    int max = 1;                    //用于记录最长无重复子串的长度

    for (int i = 0; i < len; i++) { //外层循环确定子串的起始位置

        int hash[256] = {0};        //用于记录字符是否出现过

        for (int j = i; j < len; j++) { //内层循环遍历子串中的字符

            if (hash[s[j]] == 0) {      //没有出现过 则标记未出现

                hash[s[j]] = 1;

                if (j - i + 1 > max)

                    max = j - i + 1;

            } else

                break; //遇到已经出现过的字符 则跳出内层循环

        }

    }

    return max;

}

  1. 判断字符串的两半是否相似

给你一个偶数长度的字符串 s 。将其拆分成长度相同的两半,前一半为 a ,后一半为 b 

两个字符串 相似 的前提是它们都含有相同数目的元音('a''e''i''o''u''A''E''I''O''U')。注意,s 可能同时含有大写和小写字母。

如果 a  b 相似,返回 true ;否则,返回 false 

示例 1

输入:s = "book"
输出:true
解释:a = "bo"  b = "ok" a 中有 1 个元音,b 也有 1 个元音。所以,a  b 相似。

示例 2

输入:s = "textbook"
输出:false
解释:a = "text"  b = "book" a 中有 1 个元音,b 中有 2 个元音。因此,a  b 不相似。
注意,元音 o  b 中出现两次,记为 2 个。
bool halvesAreAlike(char* s) {

    int len=strlen(s);

    int k=len/2;

    int a=0;

    int b=0;

    for(int i=0;i<len/2;i++){

        if(s[i]=='a'||s[i]=='e'||s[i]=='i'||s[i]=='o'||s[i]=='u'||s[i]=='A'||s[i]=='E'||s[i]=='I'||s[i]=='O'||s[i]=='U')

        a++;

    }

          printf("%d",a);

    for(int j=k;j<len;j++){

        if(s[j]=='a'||s[j]=='e'||s[j]=='i'||s[j]=='o'||s[j]=='u'||s[j]=='A'||s[j]=='E'||s[j]=='I'||s[j]=='O'||s[j]=='U')

        b++;

    }

            printf("%d",b);

    if(a==b) return true;

    return false;

}
  1. 最后一个单词的长度

给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。

单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。

示例 1

输入:s = "Hello World"
输出:5
解释:最后一个单词是“World”,长度为5

示例 2

输入:s = "   fly me   to   the moon  "
输出:4
解释:最后一个单词是“moon”,长度为4

示例 3

输入:s = "luffy is still joyboy"
输出:6
解释:最后一个单词是长度为6“joyboy”

int lengthOfLastWord(char * s){

  int length = strlen(s);

  int number=0;

  for(int i=length-1;i>=0;i--){

      if(s[i]!=' '){

          number++;

      }

      if(s[i]==' '&&number>0){//若为空格 但number为0 说明倒数第一个单词还没找到

          break;

      }

  }//逆向思维 从后往前找

  return number;

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值