亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

可以做些什么來優化給定的代碼

可以做些什么來優化給定的代碼

函數式編程 2021-10-20 11:07:23
給定代碼的時間限制必須小于 1.824 秒。下面給定的代碼超出了限制。我可以添加或替換什么以使代碼得到優化并在時間限制內運行。以下代碼通過從字符串中刪除“空格”和特殊字符來檢查給定的字符串是否為回文。刪除特殊字符后,字符串 mus 僅包含字母。 示例: 輸入: 2 I am :IronnorI Ma, i Ab?/Ba 輸出: 是 是代碼:public static void main (String[] args) throws IOException{    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));    int T=Integer.parseInt(br.readLine());    while(T-->0)    {        String frog=br.readLine().replaceAll("\\s+","").replaceAll("[^\\w]","");        String news="";        char ch;        for(int i=0;i<frog.length();i++)        {            ch=frog.charAt(i);            news=ch+news;        }        if(news.equalsIgnoreCase(frog))        System.out.println("YES");        else        System.out.println("NO");    }}}
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

這似乎是一項家庭作業,所以我不會為您提供代碼,我只會指導您如何改進您的方法。

您的方法是相當線性的,您反轉字符串,然后將反轉字符串與原始字符串進行比較。雖然這是一種正確的做法,但您需要進行太多操作。

假設字符串的長度為 N,另一種方法是簡單地循環 N/2 次,每次將第 i 個字符與第 N 個字符進行比較。如果有任何字符不匹配,則打印 No 并中斷,否則繼續比較。如果所有字符都匹配,則打印 yes。

Mead 的解決方案實際上與您的相同,盡管它減少了初始過濾操作。


查看完整回答
反對 回復 2021-10-20
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號