字符串练习题
作者:互联网
有效的括号
import org.junit.Test;
import java.util.Stack;
/**
* 有效的括号
* https://leetcode-cn.com/problems/valid-parentheses/
*/
public class IsValid {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<>();
char ch;
char peek;
for (int i = 0; i < s.length(); i++) {
ch = s.charAt(i);
if (ch == '(' || ch == '[' || ch == '{') {
stack.push(ch);
} else if (ch == ')' || ch == ']' || ch == '}') {
if (stack.empty()){
return false;
}
peek = stack.peek();
if ( peek == '(' && ch == ')'
|| peek == '[' && ch == ']' || peek == '{' && ch == '}') {
stack.pop();
}else{
return false;
}
}
}
return stack.empty();
}
@Test
public void test(){
System.out.println(isValid("]"));
}
}
二进制求和
public class AddBinary {
public String addBinary(String a, String b) {
if (a == null || b == null){
return "0";
}
if ("".equals(a)|| a.charAt(0) == '0'){
return b;
}
if ("".equals(b) ||b.charAt(0) == '0'){
return a;
}
StringBuilder r = new StringBuilder();
int last1 = a.length() - 1;
int last2 = b.length() - 1;
int i = 0;
int j = 0;
int c = 0;
while (last1 >= 0 && last2 >=0) {
i = a.charAt(last1)-'0';
j = b.charAt(last2)-'0';
if (i+j+c==1){
r.append("1");
// 没有进位
c = 0;
}else if (i+j+c==0){
r.append("0");
// 没有进位
c = 0;
}else if (i+j+c==2){
r.append("0");
// 进位
c = 1;
}else if (i+j+c==3){
r.append("1");
// 进位
c = 1;
}
last1--;
last2--;
}
while (last1>=0){
i = a.charAt(last1)-'0';
if (c==0){
r.append(i);
}else {
if (i+c==1){
r.append("1");
// 没有进位
c = 0;
}else if (i+c==0){
r.append("0");
// 没有进位
c = 0;
}else if (i+c==2){
r.append("0");
// 进位
c = 1;
}
}
last1--;
}
while (last2>=0){
j = b.charAt(last2)-'0';
if (c==0){
r.append(j);
}else {
if (j+c==1){
r.append("1");
// 没有进位
c = 0;
}else if (j+c==0){
r.append("0");
// 没有进位
c = 0;
}else if (j+c==2){
r.append("0");
// 进位
c = 1;
}
}
last2--;
}
if (c==1){
r.append("1");
}
return r.reverse().toString();
}
@Test
public void test() {
System.out.println(addBinary("1111", "1111"));
}
}
标签:练习题,ch,else,last1,append,last2,字符串,进位 来源: https://blog.csdn.net/qq_44581597/article/details/117898833