算法-输出英文字母对应的数字

xiaoxiao2021-02-28  103

问题描述: 如输入数字a~z, 输出数字1~26 输入数字ab,输出28

import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class To26 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); String src = ""; int target = 0; while(input.hasNextLine()){ src = input.nextLine(); target = tranform(src); } } public static int tranform(String str){ String[] nums = {"a", "b","c", "d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"}; Map<String, Integer> numMap = new HashMap<String, Integer>(); int result = 0; int length = str.length(); if(str.length()<0 || "".equals(str)){ System.out.println("ERROR"); return -1; } for(int i = 0; i<nums.length; i++){ numMap.put(nums[i], i); } if(str.length()==1){ if(" ".equals(str)){ System.out.println("Error"); return -1; } //System.out.println("Error"); result = numMap.get(str) + 1; }else{ int tempLength = length; for(int i = 0; i < length; i++){ char ch = str.charAt(i); int location = numMap.get(String.valueOf(ch)); result += (location + 1) * 26 * (tempLength - 1); tempLength = tempLength - 1 ; } char ch = str.charAt(length-1); int temp = numMap.get(String.valueOf(ch)) + 1; //result = (length - 1)*26 + temp; result = result + temp; } System.out.println(result); return result; } }
转载请注明原文地址: https://www.6miu.com/read-19111.html

最新回复(0)