最近遇到了一道像俄罗斯方块的问题,A-D能对消,B-E能对消,C和F能对消。给你一个字符串“ADBECF”最后一定能对消,编写一个函数判断一个字符串能不能对消。
2013-10-30 21:32
501 查看
刚遇到这类的问题时,我们很容易就想到了用Stack来解决问题。
看代码 :
import java.util.Stack;
public class StackTest {
/**
* @param args
*/
public static void main(String[] args) {
char[] temp = { 'B', 'D', 'A', 'A', 'D', 'E', 'A', 'D' };
Stack<Character> s = new Stack<Character>();
for (int i = 0; i < temp.length; i++) {
if (s.empty()) {
s.push(temp[i]);
} else {
if (isDelete(temp[i], s.peek())) {
s.pop();
} else {
s.push(temp[i]);
}
}
}
while(!s.empty()){
System.out.println(s.pop());
}
}
private static boolean isDelete(Character c, Character p) {
if (c - p == 3 || p - c == 3) {
return true;
}
return false;
}
}
输出Stack里面的内容,有元素的话,就不能对消,无的话就是能对消。
看代码 :
import java.util.Stack;
public class StackTest {
/**
* @param args
*/
public static void main(String[] args) {
char[] temp = { 'B', 'D', 'A', 'A', 'D', 'E', 'A', 'D' };
Stack<Character> s = new Stack<Character>();
for (int i = 0; i < temp.length; i++) {
if (s.empty()) {
s.push(temp[i]);
} else {
if (isDelete(temp[i], s.peek())) {
s.pop();
} else {
s.push(temp[i]);
}
}
}
while(!s.empty()){
System.out.println(s.pop());
}
}
private static boolean isDelete(Character c, Character p) {
if (c - p == 3 || p - c == 3) {
return true;
}
return false;
}
}
输出Stack里面的内容,有元素的话,就不能对消,无的话就是能对消。
相关文章推荐
- 最近在使用sprintf构造字符串时遇到的一个问题
- java 面试中的一道编写一个截取字符串的函数!!!!
- 【转载】java 面试中的一道编写一个截取字符串的函数
- 编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成
- 编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后。 例如,若输入字符串为:ABC123xyz ,则应输出字符串: BC123xyzA 。
- 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr()用于统计一个字符串的长度。编写函数cmpStr()用于判断两个字符串的大小。
- 编写一个函数,判断两个字符串是否是是相互打乱的,也就是说它们有着相同的字符,但是对应不同的顺序。
- java 面试中的一道编写一个截取字符串的函数
- 关于《程序员编程宝典》中编写一个函数,作用是把一个char组成的字符串循环右移n位的问题
- 编写函数,判断一个字符串是否是回文
- 编写函数,判断一个字符串是否是回文
- java 面试中的一道编写一个截取字符串的函数
- 编写函数strndel,参量是一个字符串string和两个整数start、length。在string中删除start开始的length个字符,最后返回string。
- 编写一个函数,删除一个字符串中的子串
- C语言 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列
- 编写程序删除一个字符串(不能使用任何操纵字符串的函数,不使用下标)
- 请编写函数,删除一个字符串的一部分。
- 编写一个判断素数的函数
- Instr函数与InstrRev函数的区别(如何判断一个字符串中存在包含了另一个字符串?)
- C#自己编写的一个函数 可以删除字符串中指定开头和结尾中间的字符串