赛码网:在线编程--约德尔测试
2017-04-25 20:01
204 查看
约德尔测试
兰博和提莫闲聊之后,回归到了他们的正题,约德尔人的未来。说起约德尔人的未来,黑默丁格曾经提出了一个约德尔测试,将约德尔人的历史的每个阶段都用一个字符表达出来。(包括可写字符,不包括空格。)。然后将这个字符串转化为一个01串。转化规则是如果这个字符如果是字母或者数字,这个字符变为1,其它变为0。然后将这个01串和黑默丁格观测星空得到的01串做比较,得到一个相似率。相似率越高,则约德尔的未来越光明。
请问:相似率为多少?
import java.text.DecimalFormat; import java.util.*; public class Yodel { public static void main(String[] args) { Scanner sin = new Scanner(System.in); String yodelString = sin.nextLine(); String target = sin.nextLine(); String translatedString = translate(yodelString); float compare = (float) compare(translatedString, target); DecimalFormat format = new DecimalFormat("0.00"); String result = format.format(compare * 100); System.out.println(result + "%"); } /** * 进行两个01串之间的比较 */ private static double compare(String str1, String str2) { char[] arr1 = str1.toCharArray(); char[] arr2 = str2.toCharArray(); int len = arr1.length; System.out.println(len); double count = 0; for (int i = 0; i < len; i++) { if (arr1[i] == arr2[i]) { count++; } } double rate = count / len; return rate; } /** * 从字符串到01串的转换 */ private static String translate(String yodelString) { if (yodelString.length() < 1 || yodelString.length() > 1000) { return ""; } char[] charArray = yodelString.toCharArray(); StringBuffer sb = new StringBuffer(); for (char c : charArray) { if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { sb.append("1"); } else { sb.append("0"); } } return sb.toString(); } }
相关文章推荐
- 亿能测试大讲堂 - YY在线课程[ 测试人员需要掌握的Shell脚本编程 ]
- 推荐几个很好的编程在线测试平台 online judge
- 推荐几个很好的编程在线测试平台 online judge
- 在线编程测试平台
- 赛码网_在线编程_军训队列
- 赛码网_在线编程_上台阶
- 赛码网-在线编程:翻转数组
- 判断两个链表是否相交(在线编程测试平台www.anycodex.com)
- 赛码网_在线编程_约会
- JAVA在线笔试编程时测试结果显示非法越界的解决方法
- 推荐几个很好的编程在线测试平台 online judge
- 赛码网-在线编程:股神
- 亿能测试大讲堂 - YY在线课程[ 测试人员需要掌握的Shell脚本编程 ]
- 南邮编程在线编程题一:sizeof测试字节数
- 编程题目----约德尔测试
- 阿里实习在线编程测试--数组四等分
- 如何编程实现删除一个sap的在线用户
- [导入][Tricks]在线字体测试
- [CodeProject每日一荐] 基于xml的在线选择题小测试(调查问卷)
- 转一份在 51testing 上的讨论——如何测试一个门户网站是否可以支持10万用户同时在线?