1 import java.text.Normalizer;
2 import java.util.regex.Pattern;
87 for (i = 0, j = s.length()-1; i < j; i++, j--) {
88 if (s.charAt(i) != s.charAt(j))
102 StringBuilder str =
new StringBuilder(s);
103 for (i = 0, j = s.length()-1; i < j; i++, j--) {
104 str.setCharAt(i, s.charAt(j));
105 str.setCharAt(j, s.charAt(i));
107 return str.toString();
112 if (str.length() == 0)
114 return revString(str.substring(1)) + str.charAt(0);
124 StringBuffer str =
new StringBuffer();
125 for (String part : s.split(
" ")) {
126 str.append (
new StringBuffer(part).
reverse()+
" ");
128 return str.toString();
142 String nfdNormalizedString = Normalizer.normalize(str, Normalizer.Form.NFD);
143 Pattern pattern = Pattern.compile(
"\\p{InCombiningDiacriticalMarks}+");
144 return pattern.matcher(nfdNormalizedString).replaceAll(
"");
154 StringBuffer s1 =
new StringBuffer();
155 String unWantedChars =
" -,:;._'!";
156 for (
int i = 0; i < s.length(); ++i ) {
157 char c = s.charAt(i);
158 if ( unWantedChars.indexOf(c) < 0 )
159 s1.append (Character.toUpperCase(c));
161 return s1.toString();
179 char[] str1 = s1.toCharArray();
180 java.util.Arrays.sort(str1);
181 s1 =
new String(str1);
182 char[] str2 = s2.toCharArray();
183 java.util.Arrays.sort(str2);
184 s2 =
new String(str2);
185 return s1.equals(s2);
189 int[] first =
new int[26];
190 int[] second =
new int [26];
196 for ( c = 0; c < a.length(); ++c ) {
197 int i = Character.toLowerCase(a.charAt(c))-
'a';
198 if ( i > 0 && i < 26 )
202 for ( c = 0; c < b.length(); ++c ) {
203 int i = Character.toLowerCase(b.charAt(c))-
'a';
204 if ( i > 0 && i < 26 )
208 for (c = 0; c < 26; c++) {
209 if (first[c] != second[c])
227 s1 =
new StringBuffer(s1).reverse().toString();
228 return s1.equals(s2);
253 for (
int i = start, cnt = 0; cnt < amount; ++i )
256 System.out.print ( String.format (
"%d = %d\n", cnt+1, i) );
266 public static void main(String[] args) {
268 if (args.length == 1) {
271 System.out.println (
"\"" + args[0] +
"\"" + String.format(
" is%s a palindrome", p1?
"":
" not") );
272 System.out.println (
"\"" + args[0] +
"\"" + String.format(
" is%s a palindrome phrase\n", p2?
"":
" not") );
273 System.out.println ( p.
reverse (args[0]) );
274 System.out.println ( p.
revString (args[0]) );
276 System.out.println ( p.
deAccent (args[0]) );
277 }
else if (args.length > 1) {
279 boolean c = p.
isAnagram (args[0], args[1]);
281 System.out.println (
"\"" + args[0] +
"\"" +
" and " +
"\"" + args[1] +
"\"" + String.format(
" are%s anagrams", a?
"":
" not") );
282 System.out.println (
"\"" + args[0] +
"\"" +
" and " +
"\"" + args[1] +
"\"" + String.format(
" are%s anagrams", c?
"":
" not") );
283 System.out.println (
"\"" + args[0] +
"\"" +
" and " +
"\"" + args[1] +
"\"" + String.format(
" are%s mutual palindromes", b?
"":
" not") );