前言:
如今咱们对“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; }};
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
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 判断字符串是否为数字