力扣日常切题
1.有效的括号
题解:用栈stack去做就简单多了
AC代码如下:
class Solution {
public:
bool isValid(string s) {
stack<char>k;
int n=s.size();
k.push(s[0]);
for(int i=1;i<n;i++)
{if(k.empty()) k.push(s[i]);
else
if((k.top()=='('&&s[i]==')')||(k.top()=='{'&&s[i]=='}')||(k.top()=='['&&s[i]==']'))
k.pop();
else k.push(s[i]);
}
if(k.empty())
return true;
else
return false;
}
};
2.检查句子中的数字是否递增
AC代码如下:
class Solution {
public:
bool areNumbersAscending(string s) {
int max=-1;
for(int i=0;i<s.size();i++)
{
if(s[i]>='0'&&s[i]<='9')
{
int t=s[i]-'0';
while(s[++i]>='0'&&s[i]<='9')
{
t=t*10+s[i]-'0';
}
cout<<t<<endl;
if(t<=max) return false;
else max=t;
}
}
return true;
}
};
3.简易银行系统
这题比较有意思而且挺简单。
AC代码如下:
class Bank {
public:
int n;
vector<long long>balances;
Bank(vector<long long>& balance) {
n=balance.size();
balances=balance;
}
bool transfer(int account1, int account2, long long money) {
if((account1>n)||(account2>n)) return false;
if(balances[account1-1]<money) return false;
else{
balances[account1-1]=balances[account1-1]-money;
balances[account2-1]=balances[account2-1]+money;
}
return true;
}
bool deposit(int account, long long money) {
if(account>n) return false;
else
balances[account-1]=balances[account-1]+money;
return true;
}
bool withdraw(int account, long long money) {
if(account>n) return false;
if(balances[account-1]<money) return false;
else
balances[account-1]=balances[account-1]-money;
return true;
}
};
/**
* Your Bank object will be instantiated and called as such:
* Bank* obj = new Bank(balance);
* bool param_1 = obj->transfer(account1,account2,money);
* bool param_2 = obj->deposit(account,money);
* bool param_3 = obj->withdraw(account,money);
*/