數位之積
https://www.nowcoder.com/questionTerminal/f9b86bcd95a643138f9593966a5495b8
現給定任意正整數 n,請尋找並輸出最小的正整數 m(m>9),使得 m 的各位(個位、十位、百位 … …)之乘積等於n,若不存在則輸出 -1。
示例1
輸入
36
輸出
49
示例2
輸入
100
輸出
455
解題思路,如果存在這樣的整數 那麼一定是每一位都是[2-9],同時是一種貪心的思想,數值越大的一定放在越小位
public class Solution {
/**
* 輸入一個整形數值,返回一個整形值
*
* @param n int整型 n>9
* @return int整型
*/
public int solution(int n) {
// write code here
StringBuilder sb = new StringBuilder();
while (n!=1) {
int i=9; //爲什麼循環從9開始不從2開始就是貪心的思想
for (; i > 1; i--){ //在9-2試探
if(n%i==0){
sb.append(i);
n/=i;
break;
}
}
if(i==1) //代表不存在這樣的數
return -1;
}
return Integer.parseInt(sb.reverse().toString());
}
}
拆禮盒
鏈接:https://www.nowcoder.com/questionTerminal/916c1446d019459f94743443f71b3e70
來源:牛客網
小v所在的公司即將舉行年會,年會方案設計過程中必不可少的一項就是抽獎活動。小v在本次活動中被委以重任,負責抽獎活動的策劃;爲了讓中獎的禮物更加精美且富有神祕感,打算採用禮品盒來包裝獎品,此時小v發揮了自己的創意想捉弄一下獲獎的同事,便採取了多重包裝來包裝獎品。
現給出一個字符串,並假定用一對圓括號( )表示一個禮品盒,0表示獎品,你能據此幫獲獎者算出最少要拆多少個禮品盒才能拿到獎品嗎?
示例1
輸入
(()(()((()(0)))))
輸出
5
import java.io.*;
/**
* Welcome to vivo !
*/
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr = br.readLine();
int output = solution(inputStr );
System.out.println(output);
}
private static int solution(String str) {
char[] charArray=str.toCharArray();
int ret=0;
for(int i=0;i<charArray.length;i++){
if(charArray[i]=='0')
break;
else{
ret++;
//思路,在遇到0之前 凡是有)這個括號的 都要減去()兩個字符
if(charArray[i]==')'){
ret-=2;
}
}
}
return ret;
// TODO Write your code here
}
}