(字符串) leetcode

思路:判断各种边界条件。

1)首先过滤字符串前面的空格,即找到第一个不为空格的字符;

2)如果第一个字符是+或-,设置flag值;

3)接下来的字符如果在‘0‘ - ‘9‘ 范围内,则转换为数字,否则结束循环; 注意上一步中,如果结果已经大于INT_MAX或小于INT_MIN,则直接返回INT_MAX或INT_MIN;

4)如果过滤掉空格后的字符不是一个有效的整数字符,则返回0;

5)整数之后可能有多余的其他字符,可以忽略不计。

class Solution {
public:
    int myAtoi(string str) {
        int s = str.size();
        if(s==0)
            return 0;
        int i=0, flag=1, cur;   //用i遍历,flag存储正负号
        long ans = 0;    //计算数字的值,因为可能超出int边界,故定义为long
        while(i<s && str[i] == ‘ ‘)
            //过滤前面的空格
            i++;

        if(str[i]==‘-‘ || str[i] == ‘+‘){
            //处理 + 和 -
            if(str[i] == ‘-‘)
                flag = -1;
            i++;
        }

        while(i<s && str[i]>=‘0‘ && str[i]<=‘9‘){
            cur = str[i] - ‘0‘;
            ans = ans*10 + cur;
            if(ans * flag < INT_MIN)
                return INT_MIN;
            if(ans * flag > INT_MAX)
                return INT_MAX;
            i++;
        }
        return ans*flag;
    }
};

原文地址:https://www.cnblogs.com/Bella2017/p/11247458.html

时间: 2024-11-12 22:47:35

(字符串) leetcode的相关文章

逆转字符串leetcode

public class Solution { public String reverseWords(String s) { String ans=reverse(s); String s2[]=ans.split("\\s+"); StringBuffer sb=new StringBuffer(); for(int i=0;i<s2.length;i++) { sb.append(reverse(s2[i])+" "); } return sb.toStr

LeetCode【5】. Longest Palindromic Substring --java实现

Longest Palindromic Substring 一.题目如下:        Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. 题目要求给定字符串的最大对称子字符串,如"aaabccbac

Leetcode 151题 Reverse Words in a String

时间:2014.05.10 地点:基地 心情:准备刷下Leetcode题了,就从第151题开始吧 ------------------------------------------------------------------------------------------ 一.题目 Reverse Words in a String Given an input string, reverse the string word by word. For example, Given s =

Word Break II leetcode java

题目: Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each word is a valid dictionary word. Return all such possible sentences. For example, given s = "catsanddog", dict = ["cat", "cats

[算法总结] 13 道题搞定 BAT 面试——字符串

1. KMP 算法 谈到字符串问题,不得不提的就是 KMP 算法,它是用来解决字符串查找的问题,可以在一个字符串(S)中查找一个子串(W)出现的位置.KMP 算法把字符匹配的时间复杂度缩小到 O(m+n) ,而空间复杂度也只有O(m).因为"暴力搜索"的方法会反复回溯主串,导致效率低下,而KMP算法可以利用已经部分匹配这个有效信息,保持主串上的指针不回溯,通过修改子串的指针,让模式串尽量地移动到有效的位置. 具体算法细节请参考: 字符串匹配的KMP算法 从头到尾彻底理解KMP 如何更好

LeetCode:Word Pattern - 字符串模式匹配

1.题目名称 Word Pattern(字符串模式匹配) 2.题目地址 https://leetcode.com/problems/word-pattern/ 3.题目内容 英文:Given a pattern and a string str, find if str follows the same pattern. 中文:给出一组模式(pattern)和一个字符串(str),查看字符串是否与模式匹配 例如: pattern = "abba",str = "dog cat

[LeetCode] Unique Substrings in Wraparound String 封装字符串中的独特子字符串

Consider the string s to be the infinite wraparound string of "abcdefghijklmnopqrstuvwxyz", so s will look like this: "...zabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd....". Now we have another string p. Your job is to find

【LeetCode】- String to Integer (字符串转成整形)

[ 问题: ] Hint:Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases. Notes:It is intended for this problem to be specified vaguely (ie, no given input specs). Y

[LeetCode] Find All Anagrams in a String 找出字符串中所有的变位词

Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100. The order of output does not matter.