/** * 反转字符串 * eg:"abc" => "cba" * @param str */ static void reverseString(String str) { // 目标字符串转换为字符数组 char[] charArray = str.toCharArray(); // 获取转换后的字符数组长度 int charLength = charArray.length; char char_temp;// 临时字符变量 // 反转后的字符串 String newStr; // 循环反转字符 for (int i = 0; i < charLength / 2; i++) { // 将索引[i]元素的值赋值临时字符 char_temp = charArray[i]; // 索引[charLength - 1 - i]元素的值赋值索引[i] charArray[i] = charArray[charLength - 1 - i]; // 临时字符赋值索引[charLength - 1 - i]元素 charArray[charLength - 1 - i] = char_temp; } // 获取反转后的字符串 newStr = String.valueOf(charArray); // CSharp:newStr = new string(charArray); // js:newStr = str.split("").reverse().join(""); System.out.println(newStr); } static void reverseString2(String str) { int length = str.length(); StringBuilder sb = new StringBuilder(length); length--; for (int i = length; i >= 0; i--) { sb.append(str.charAt(i)); } System.out.println(sb.toString()); }
/** * 两字符串求最长公共字符串 * * @param a * @param b */ static void compareString(String a, String b) { int beginIndex = 0; int endIndex = 0; int maxLength = 0; String shortString = null; String longString = null; if (a.length() > b.length()) { shortString = b; longString = a; } else { shortString = a; longString = b; } String splitString = null; for (int i = 0; i <= shortString.length(); i++) { for (int j = i + 1; j <= shortString.length(); j++) { splitString = shortString.substring(i, j); if (longString.indexOf(splitString) > -1) { if (splitString.length() > maxLength) { maxLength = splitString.length(); beginIndex = i; endIndex = j; } } } } System.out.println(String.format("The MaxLength:%d", maxLength)); System.out.println(String.format("The BeginIndex:%d", beginIndex)); System.out.println(String.format("The EndIndex:%d", endIndex)); System.out.println(String.format("The MaxString:%s", a.substring(beginIndex, endIndex))); } /* * 判断回文数 */ static void isPalindrome(String str) { boolean sign = true; int length = str.length(); int start = 0; int end = 0; if (length == 1) sign = false; for (int i = 0; i < length / 2; i++) { start = str.charAt(i); end = str.charAt(length - i - 1); if ((start ^ end) != 0) sign = false; // return } System.out.println(String.format("isPalindrome: %s", sign)); } /* * 判断某一字符串是否与另一字符串相同 */ static void isAnagrams(String a, String b) { int aLength = a.length(); int bLength = b.length(); int aChar = 0; int bChar = 0; boolean sign = true; int result = 0; if (aLength != bLength) sign = false; // return for (int i = 0; i < aLength; i++) { aChar = a.charAt(i); bChar = b.charAt(i); result ^= aChar ^ bChar; } sign = result == 0; System.out.println(String.format("isAnagrams: %s", sign)); } /* * 截取中英文混合的字符串 */ static void subString(String str, int maxLen) { int len = 0; char cha = '0'; StringBuilder sb = new StringBuilder(maxLen); if (str == null || str.isEmpty()) return; try { for (int i = 0; i < str.length(); i++) { cha = str.charAt(i); len += String.valueOf(cha).getBytes("GBK").length; if (len > maxLen) break; sb.append(cha); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } System.out.println(sb.toString()); } /* * 汉字九九乘法表 */ static void multiplicationTable() { char[] chars = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十' }; int result = 0; for (int i = 1; i <= 9; i++) { for (int j = 1; j <= i; j++) { result = i * j; if (String.valueOf(result).length() == 1) { System.out.print(String.format(" %s×%s=%s ", chars[i], chars[j], chars[result])); } else { if (result % 10 == 0) { System.out.print(String.format(" %s×%s=%s%s ", chars[i], chars[j], chars[(result / 10)], chars[10])); } else { System.out.print(String.format(" %s×%s=%s%s%s ", chars[i], chars[j], chars[(result / 10)], chars[10], chars[(result % 10)])); } } } System.out.println(); } } /* * 模拟手算加法实现大数字计算 */ static String addString(String a, String b) { // 判断是否为null if (a == null || b == null) return null; String _a = a.trim(); String _b = b.trim(); // 判断是否为空 if (_a.isEmpty() && _b.isEmpty()) return null; // 判断是否为0 if (_a.equals("0")) return _b; if (_b.equals("0")) return _a; // 判断是否为数字 if (!(StringUtils.isNumber(a) && StringUtils.isNumber(b))) return null; // 不足位补零 if (_a.length() > _b.length()) { String temp = _a; _a = _b; _b = temp; } _a = StringUtils.addZeroToFirst(_a, _b.length()); // 定义返回值变量 StringBuilder result = new StringBuilder(_a.length()); // 循环模拟进位相加 int sum = 0; int temp = 0; int num1 = 0; int num2 = 0; for (int i = _a.length() - 1; i >= 0; i--) { num1 = _a.charAt(i) - '0'; num2 = _b.charAt(i) - '0'; sum = num1 + num2 + temp; result.append(sum % 10); temp = sum / 10; } // 反转字符串 result.reverse(); // 判断最高位相加的和 if (temp != 0) result.insert(0, temp); return result.toString(); }