使用栈完成回文数、字符串反转:
根据上一篇文章JAVA数据结构——栈 的一些特性完成回文数和串反转。
判断回文数,JAVA帮我们封装了一些方法,我们只需要调用方法即可。
如:
String s = "123";
char[] c = s.toCharArray();
// 然后遍历后append进sb即可
StringBuffer sb = new StringBuffer();
sb.reverse();
直接串反转后进行串对比即可。一下子完成了上述两种功能。那么如果没有这些封装的方法,我们怎么进行串反转和判断回文数呢?那么我们就得使用栈,栈的特性是先进后出,这样只需要进行一趟出栈入栈操作,则完成了串反转,同时在出栈入栈时进行字符对比,则完成了回文数操作。
回文数:
// 通过栈判断是否是回文数
public static boolean isPalindSeq(String str) throws Exception{
char[] chars = str.toCharArray();
SqlStack sqlStack = new SqlStack(chars.length);
for (int i = 0; i <chars.length ; i++) {
sqlStack.push(chars[i]);
}
for (int i = 0; i <chars.length ; i++) {
if (!sqlStack.pop().equals(chars[i])){
return false;
}
}
return true;
}
串反转:
public static void reverse(Object[] arr) throws Exception{
SqlStack sqlStack = new SqlStack(arr.length);
for (int i = 0; i <arr.length ; i++) {
sqlStack.push(arr[i]);// 压入栈
}
for (int i = 0; i < arr.length; i++) {
arr[i] = sqlStack.pop();
}
for (Object o:
arr ) {
System.out.println(o.toString());
}
}
public static void main(String[] args) throws Exception{
Object[] arr = new Object[10];
for (int i = 0; i <arr.length ; i++) {
arr[i] = i;
}
// reverse(arr);
System.out.println(isPalindSeq("124321"));
System.out.println(isPalindSeq("1234321"));
}
gitee源码地址: