- 计算926的9260次方里的字符串里有多少个926
package StringTest;import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import static java.lang.Math.pow;public class String2 {public static void main(String[] args) {double a = pow(12, 2);System.out.println("a = " + a);System.out.println();int num1 = 926;String sub1 = String.valueOf(num1);String sub = "926";BigDecimal bigDecimal = new BigDecimal(sub1);BigDecimal pow = bigDecimal.pow(num1 * 10);String string = pow.toString();System.out.println("string长度为 " + string.length());System.out.println();int count1 = countSub1(string, sub);System.out.println("count1 = " + count1);System.out.println();int count2 = countSub2(string, sub);System.out.println("count2 = " + count2);System.out.println();int count3 = countSub3(string, sub);System.out.println("count3 = " + count3);}private static int countSub1(String string, String sub) {int count = 0;long begin = System.currentTimeMillis();Matcher matcher = Pattern.compile(sub).matcher(string);while (matcher.find()) {count++;}long end = System.currentTimeMillis();System.out.println("运行时间1 = " + (double) (end - begin) / 1000 + "s");return count;}private static int countSub2(String string, String sub) {int olcCount = string.length();long begin = System.currentTimeMillis();int newCount = string.replace(sub, "").length();int count = (olcCount - newCount) / sub.length();long end = System.currentTimeMillis();System.out.println("运行时间2 = " + (double) (end - begin) / 1000 + "s");return count;}private static int countSub3(String string, String sub) {long begin = System.currentTimeMillis();int count = 0;int index = 0;int mainStrLength = string.length();int subStrLength = sub.length();if (subStrLength > mainStrLength) {return 0;}while ((index = string.indexOf(sub, index)) != -1) {count++;index += subStrLength;}long end = System.currentTimeMillis();System.out.println("运行时间3 = " + (double) (end - begin) / 1000 + "s");return count;}
}

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!