<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          撬動offer:尋找丟失的數字

          共 4570字,需瀏覽 10分鐘

           ·

          2020-11-29 00:24

          點擊上方「藍字」關注我們

          0x01:算法題目

          Missing Digit

          Have the function MissingDigit(str) take the str parameter, which will be a simple mathematical formula with three numbers, a single operator (+, -, *, or /) and an equal sign (=) and return the digit that completes the equation. In one of the numbers in the equation, there will be an x character, and your program should determine what digit is missing. For example, if str is "3x + 12 = 46" then your program should output 4. The x character can appear in any of the three numbers and all three numbers will be greater than or equal to 0 and less than or equal to 1000000.


          Examples

          Input: "4 - 2 = x"

          Output: 2


          Input: "1x0 * 12 = 1200"

          Output: 0


          大概的意思:存在一個四則運算等式,包含三個數字、一個符號(可以是+、-、*、/)和一個等號(=)。其中三字數字是可以是等式成立的,在三個數字中有個數字中有一個數字的某一位是未知的,求這位的數字。


          0x02:題解

          import?java.util.HashMap;
          import?java.util.Map;
          import?java.util.Scanner;

          public?class?MainCmd?{

          ????public?static?String?MissingDigit(String?str)?{
          ????????if?(str?==?null?||?str.trim().equals(""))?{
          ????????????return?str;
          ????????}
          ????????if?(!str.contains("="))?{
          ????????????return?str;
          ????????}
          ????????String[]?splitStr?=?str.split("=");
          ????????String?firstElement?=?splitStr[0];
          ????????if?(firstElement.contains("-")?||?firstElement.contains("+")?||?firstElement.contains("*")
          ????????????????||?firstElement.contains("/"))?{
          ????????????String[]?ele?=?firstElement.split("[\\+\\-\\*\\/]");
          ????????????String?eleOne?=?ele[0];
          ????????????String?eleTow?=?ele[1];
          ????????????String?eleThree?=?splitStr[1];
          ????????????String?result?=?"";
          ????????????if?(str.contains("+"))?{
          ????????????????result?=?process(eleOne,?eleTow,?eleThree,?"+");
          ????????????}?else?if?(str.contains("-"))?{
          ????????????????result?=?process(eleOne,?eleTow,?eleThree,?"-");
          ????????????}?else?if?(str.contains("*"))?{
          ????????????????result?=?process(eleOne,?eleTow,?eleThree,?"*");
          ????????????}?else?{
          ????????????????result?=?process(eleOne,?eleTow,?eleThree,?"/");
          ????????????}
          ????????????return?result;
          ????????}?else?{
          ????????????return?str;
          ????????}
          ????}

          ????public?static?boolean?checkContainX(String?str)?{
          ????????if?(str.contains("x"))?{
          ????????????return?true;
          ????????}
          ????????return?false;
          ????}

          ????private?static?String?process(String?eleOne,?String?eleTow,?String?eleThree,?String?syboml)?{
          ????????boolean?eleOneFlag?=?checkContainX(eleOne);
          ????????boolean?eleTowFlag?=?checkContainX(eleTow);
          ????????boolean?eleThreeFlag?=?checkContainX(eleThree);
          ????????long?result?=?0;
          ????????switch?(syboml)?{
          ????????case?"+":
          ????????????if(eleOneFlag){
          ????????????????result?=?Long.parseLong(eleThree)?-?Long.parseLong(eleTow);
          ????????????}else?if(eleTowFlag){
          ????????????????result?=?Long.parseLong(eleThree)?-?Long.parseLong(eleOne);
          ????????????}else?if(eleThreeFlag){
          ????????????????result?=?Long.parseLong(eleOne)?+?Long.parseLong(eleTow);
          ????????????}
          ????????????break;
          ????????case?"-":
          ????????????if(eleOneFlag){
          ????????????????result?=?Long.parseLong(eleThree)?+?Long.parseLong(eleTow);
          ????????????}else?if(eleTowFlag){
          ????????????????result?=?Long.parseLong(eleOne)?-?Long.parseLong(eleThree);
          ????????????}else?if(eleThreeFlag){
          ????????????????result?=?Long.parseLong(eleOne)?-?Long.parseLong(eleTow);
          ????????????}
          ????????????break;
          ????????case?"*":
          ????????????if(eleOneFlag){
          ????????????????result?=?Long.parseLong(eleThree)?/?Long.parseLong(eleTow);
          ????????????}else?if(eleTowFlag){
          ????????????????result?=?Long.parseLong(eleThree)?/?Long.parseLong(eleOne);
          ????????????}else?if(eleThreeFlag){
          ????????????????result?=?Long.parseLong(eleOne)?*?Long.parseLong(eleTow);
          ????????????}
          ????????????break;
          ????????case?"/":
          ????????????if(eleOneFlag){
          ????????????????result?=?Long.parseLong(eleThree)?*?Long.parseLong(eleTow);
          ????????????}else?if(eleTowFlag){
          ????????????????result?=?Long.parseLong(eleOne)?/?Long.parseLong(eleThree);
          ????????????}else?if(eleThreeFlag){
          ????????????????result?=?Long.parseLong(eleOne)?/?Long.parseLong(eleTow);
          ????????????}
          ????????????break;
          ????????}
          ????????String?retResult?=?"";
          ????????if(eleOneFlag){
          ????????????retResult?=?getX(result,?eleOne);
          ????????}else?if(eleTowFlag){
          ????????????retResult?=?getX(result,?eleTow);
          ????????}else?if(eleThreeFlag){
          ????????????retResult?=?getX(result,?eleThree);
          ????????}
          ????????return?retResult;
          ????}

          ????private?static?String?getX(Long?result,?String?ele)?{
          ????????String?target?=?String.valueOf(result);
          ????????char[]?targetChar?=?target.toCharArray();
          ????????char[]?eleChar?=?ele.toCharArray();
          ????????Map?mapper?=?new?HashMap();
          ????????for(int?i=0;?i????????????mapper.put(eleChar[i],?targetChar[i]);
          ????????}
          ????????return?String.valueOf(mapper.get('x'));
          ????}

          ????public?static?void?main(String[]?args)?{
          ????????Scanner?s?=?new?Scanner(System.in);
          ????????while(true){
          ????????????String?line?=?s.nextLine();
          ????????????line?=?line.replaceAll("?",?"");
          ????????????System.out.print(MissingDigit(line));
          ????????}
          ????}

          }

          這個是暴力破解出來的,集思廣益,看看大家有沒有比較優(yōu)的方案。


          掃碼二維碼

          獲取更多精彩

          Java樂園

          有用!分享+在看?
          瀏覽 68
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  丁香亚洲| 国产一区二区三区四区五区在线 | 秋霞无码一区二区三区 | 精品无码久久久久久久久不卡 | 成人水蜜桃视频 |