龙空技术网

每日十题3-22

小羊的Debug 48

前言:

如今咱们对“js 判断字符串是否为数字”可能比较关心,各位老铁们都想要分析一些“js 判断字符串是否为数字”的相关资讯。那么小编在网络上搜集了一些有关“js 判断字符串是否为数字””的相关内容,希望你们能喜欢,兄弟们一起来学习一下吧!

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

class Solution {public:    int searchInsert(vector<int>& nums, int target) {      int l=0,r=nums.size()-1;      while(l<=r)      {           int mid=(l+r)/2;          if(nums[mid]==target) return mid;          else if(nums[mid]<target)l=mid+1;          else if(nums[mid]>target) r=mid-1;      }      return l;    }};

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。

class Solution {public:    int strStr(string s, string p) {        int n = s.size(), m = p.size();        for(int i = 0; i <= n - m; i++){            int j = i, k = 0;             while(k < m and s[j] == p[k]){                j++;                k++;            }            if(k == m) return i;        }        return -1;    }};

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

class Solution {public:    int removeElement(vector<int>& nums, int val) {        int j = nums.size() - 1;        for (int i = 0; i <= j; i++) {            if (nums[i] == val) {                swap(nums[i--], nums[j--]);            }        }        return j + 1;    }};

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致

class Solution {public:    int removeDuplicates(vector<int>& nums) {        int n = nums.size(), k = 1; // k记录不重复元素个数        if(n == 0)  return 0;        for(auto& x: nums)            if(x != nums[k-1]) // 当前数不重复                nums[k++] = x; // k下标处元素更新为当前数,k+1        return k;    }};

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

class Solution {public:    bool isValid(string s) {        unordered_map<char,int> m{{'(',1},{'[',2},{'{',3},                                {')',4},{']',5},{'}',6}};        stack<char> st;        bool istrue=true;        for(char c:s){            int flag=m[c];            if(flag>=1&&flag<=3) st.push(c);            else if(!st.empty()&&m[st.top()]==flag-3) st.pop();            else {istrue=false;break;}        }        if(!st.empty()) istrue=false;        return istrue;    }};

罗马数字包含以下七种字符: IVXLCDM

class Solution {public:unordered_map<int,int> mp={{'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000}};    int romanToInt(string s) {        int n=s.size(),l=0,ans=0,pre=1001;        while(l<n)        {            ans+=mp[s[l]];            if(mp[s[l]]>pre) ans-=2*pre;            pre=mp[s[l]];            ++l;        }        return ans;    }};

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

class Solution{public:    int maxSubArray(vector<int> &nums)    {        //类似寻找最大最小值的题目,初始值一定要定义成理论上的最小最大值        int max = INT_MIN;        int numsSize = int(nums.size());        for (int i = 0; i < numsSize; i++)        {            int sum = 0;            for (int j = i; j < numsSize; j++)            {                sum += nums[j];                if (sum > max)                {                    max = sum;                }            }        }        return max;    }};

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。

class Solution {public:    vector<int> plusOne(vector<int>& digits) {        int n=digits.size(), c=1, s;        for(int i=n-1;i>=0;i--){            s = digits[i] + c;            digits[i] = s % 10;            c = s / 10;        }        if(c)            digits.insert(digits.begin(), 1);        return digits;    }};

给你两个二进制字符串,返回它们的和(用二进制表示)。

class Solution {public:    string addBinary(string a, string b) {        int al = a.size();        int bl = b.size();        while(al < bl) //让两个字符串等长,若不等长,在短的字符串前补零,否则之后的操作会超出索引        {            a = '0' + a;            ++ al;        }        while(al > bl)        {            b = '0' + b;            ++ bl;        }        for(int j = a.size() - 1; j > 0; -- j) //从后到前遍历所有的位数,同位相加        {            a[j] = a[j] - '0' + b[j];            if(a[j] >=  '2') //若大于等于字符‘2’,需要进一            {                a[j] = (a[j] - '0') % 2 + '0';                a[j-1] = a[j-1] + 1;            }        }        a[0] = a[0] - '0' + b[0]; //将ab的第0位相加        if(a[0] >= '2') //若大于等于2,需要进一        {            a[0] = (a[0] - '0') % 2 + '0';            a = '1' + a;        }        return a;    }};

给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的

class Solution{    public:        bool isSameTree(TreeNode* p, TreeNode* q) {            if(p == NULL && q == NULL) return true;            else if(p != NULL && q == NULL) return false;            else if(p == NULL && q != NULL) return false;            else if(p->val != q->val) return false;            bool leftSide = isSameTree(p->left, q->left);            bool rightSide = isSameTree(p->right, q->right);            return  leftSide && rightSide;        }    };

标签: #js 判断字符串是否为数字