作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader stdin;
String str;
// TODO Auto-generated method stub
stdin = new BufferedReader(new InputStreamReader(System.in));
char[] stringArray ;
boolean isPalindrone, isMirrored;
while((str = stdin.readLine())!= null) {
//convert string into array using toCharArray() method of string class
stringArray = str.toCharArray();
isPalindrone = new Main().checkPalindromes(stringArray);
isMirrored = new Main().precheckMirroring(stringArray);
if(isPalindrone && isMirrored) {
System.out.println(str + " -- is a mirrored palindrome.");
} else if(isPalindrone) {
System.out.println(str + " -- is a regular palindrome.");
} else if(!isPalindrone && isMirrored) {
System.out.println(str + " -- is a mirrored string.");
} else {
System.out.println(str + " -- is not a palindrome.");
}
System.out.println();
}
}
/* precheckpalindronetest */
public boolean precheckMirroring(char stringArray[]) {
boolean pretest_ismirror = true;
char[] m_char = {'A' , 'E' , 'H', 'I' , 'J', 'L','M', 'O' ,'T','U' ,
'V','W' , 'X' , 'Y', 'Z' , '1', '2','3' , '5' , '8'
};
boolean match = false;
for(int i = 0 ; i < stringArray.length; ++i) {
match = false;
for(int j = 0 ; j < m_char.length; ++j) {
if(stringArray[i] == m_char[j]) {
match = true;
break;
}
}
if(match == false) {
pretest_ismirror = false;
break;
}
}
return pretest_ismirror;
}
/* check palindromes */
public boolean checkPalindromes(char stringArray[]) {
int i = 0 ;
int j = stringArray.length - 1;
boolean check_palindrone = true;
while(i <= j) {
if(stringArray[i] != stringArray[j]){
check_palindrone = false;
break;
}
++i;
--j;
}
return check_palindrone;
}
/* check mirrored */
public boolean checkMirroredString(String str) {
if(this.precheckMirroring(str.toCharArray()) == false) {
return false;
}
StringBuffer strbuf = new StringBuffer(str);
int inc = 0;
Map<String, String> map = new HashMap<String, String>();
map.put("A", "A");
map.put("E", "3");
map.put("H", "H");
map.put("I", "I");
map.put("J", "L");
map.put("L", "J");
map.put("M", "M");
map.put("O", "O");
map.put("T", "T");
map.put("U", "U");
map.put("V", "V");
map.put("W", "W");
map.put("X", "X");
map.put("Y", "Y");
map.put("Z", "5");
map.put("1", "1");
map.put("2", "S");
map.put("3", "E");
map.put("5", "Z");
map.put("8", "8");
int i = 0 ;
int j = strbuf.length() - 1;
while(i < j) {
String left = Character.toString(strbuf.charAt(i));
String right = Character.toString(strbuf.charAt(j));
// If the character is reverse to each other
if(map.get(left) != right || map.get(right) != left ){
return false;
}
if( left != right) {
return false;
}
++i;
--j;
}
return true;
}
}
最佳答案
大概
isMirrored = new Main().precheckMirroring(stringArray);
isMirrored = new Main().checkMirroredString(stringArray);
==
可靠地比较字符串,应该使用
equals
。
checkMirroredString
中,您可能不需要:
if( left != right) {
return false;
}
关于java - ACM 401-在线回教在线法官给出错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127127/
更新:我发现我的 DP 解决方案没有正确处理奖金的问题。我向状态数组添加了一个维度来表示前 6 个类别的总和。但是,解决方案超时。这不是很严重的超时,因为每个测试用例在我的机器上可以在不到 1 秒的时
我是一名优秀的程序员,十分优秀!