2014 华为机考 中国海洋大学上午第三题(java实现)
生活随笔
收集整理的這篇文章主要介紹了
2014 华为机考 中国海洋大学上午第三题(java实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??? 昨天上午,在還算輕松地情況下完成了機考,雖然最后一題做了一個多小時都沒做出來,但是慶幸后面的行為模式測試過關了,真是刷人的測試啊。
回來后把第三題再想想,重新做了一遍,結果不到20分鐘就做出來了(我覺得做出來了,幾次錯誤、正確測試都還行,但正確與否還需驗證)。明天要面試,不知道結果怎樣,但是不管怎樣,盡力就好,像半澤直樹那樣拼搏的人生才有意義啊~~!!
???? 題目,記得個大概。就是有字符串“?^_^*”,"?"與“*”中間字符為主要匹配字符,“?”代表一個字符,而“*”可以當做0或任意數量字符。對目標字符串進行匹配,并輸出字符串匹配成功的第一個字符的下標,字符串的第一個字符下標為0。(我一開始沒注意到“?”可以有N多個,白浪費功夫做一個“?”的匹配了)。
??? 例子:
??? 輸入:?^_^*
???????????? abc^_^abc
??? 輸出:2
?
??? 俺自己的代碼:
import java.io.BufferedInputStream; import java.util.ArrayList; import java.util.List; import java.util.Scanner;public class Main {static int num=0;public static void main(String[] args) {Scanner cin = new Scanner(new BufferedInputStream(System.in));String s1 = cin.next();String s2 = cin.next();int flag=0,k=0,t=-1;char[] ch = s2.toCharArray();List<Character> list = get(s1);for(int i=num-1;i<ch.length;i++){if(flag==0){if(ch[i]==list.get(k)){flag=1;k++;t=i-num;}}else{if(ch[i]==list.get(k)){k++;if(k==list.size())break;}else{flag=0;k=0;t=-1;}}}if(k<list.size())t=-1;if(t>=0)System.out.print(t);elseSystem.out.print(t);}public static List<Character> get(String s){List<Character> list = new ArrayList<Character>();char[] ch = s.toCharArray();for(char c:ch){if(c=='?')num++;else if(c!='*')list.add(c);elsebreak;}return list;}} View Code?
?
???
轉載于:https://www.cnblogs.com/sasaxu/p/3365412.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的2014 华为机考 中国海洋大学上午第三题(java实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2012年读书目录
- 下一篇: twitter storm源码走读之2