最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java解決華為機試實現(xiàn)密碼截取?

 更新時間:2022年02月23日 08:45:40   作者:97的風  
這篇文章主要介紹了基于Java解決華為機試實現(xiàn)密碼截取,文章圍繞主題相關(guān)資料展開詳細內(nèi)容,具有一的參考價值,需要的小伙伴可以參考一下,希望對你有所幫助

1.簡述

描述:

Catcher是MCA國的情報員,他工作時發(fā)現(xiàn)敵國會用一些對稱的密碼進行通信,比如像這些ABBA,ABA,A,123321,但是他們有時會在開始或結(jié)束時加入一些無關(guān)的字符以防止別國破解。比如進行下列變化 ABBA->12ABBA,ABA->ABAKK,123321->51233214 。因為截獲的串太長了,而且存在多種可能的情況(abaaab可看作是aba,或baaab的加密形式),Cathcer的工作量實在是太大了,他只能向電腦高手求助,你能幫Catcher找出最長的有效密碼串嗎?

數(shù)據(jù)范圍:字符串長度滿足1 \le n \le 2500 \1≤n≤2500 

輸入描述:

輸入一個字符串(字符串的長度不超過2500)

輸出描述:

返回有效密碼串的最大長度

示例1

輸入:

ABBA

輸出:

4

示例2

輸入:

ABBBA

輸出:

5

示例3

輸入:

12HHHHA

復(fù)制輸出:

4

2.代碼實現(xiàn)

?解題思路:

最長回文子串的中心擴散法,遍歷每個字符作為中間位,進行左右比較

算法流程:

從右到左,對每個字符進行遍歷處理,并且每個字符要處理兩次,因為回文子串有兩種情況:

ABA型:只需要從當前字符向兩邊擴散,比較左右字符是否相等,找出以當前字符為中心的最長回文子串長度

ABBA型:只需要從當前字符和下一個字符向兩邊擴散,比較左右字符是否相等,找出以當前字符和下一個字符為中心的最長回文子串長度

最后比對兩種類型的長度,取自較長的長度

import java.util.Scanner;
public class Main {
? ? public static void main(String[] args) {
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? String s = sc.nextLine();
? ? ? ? System.out.println(solution(s));
? ? }
? ??
? ? private static int solution(String s) {
? ? ? ? int res = 0;
? ? ? ? for(int i = 0; i < s.length(); i++) {
? ? ? ? ? ? // ABA型
? ? ? ? ? ? int len1 = longest(s, i, i);
? ? ? ? ? ? // ABBA型
? ? ? ? ? ? int len2 = longest(s, i, i + 1);
? ? ? ? ? ? res = Math.max(res, len1 > len2 ? len1 : len2);
? ? ? ? }
? ? ? ? return res;
? ? }
? ??
? ? private static int longest(String s, int l, int r) {
? ? ? ? while(l >= 0 && r < s.length() && s.charAt(l) == s.charAt(r)) {
? ? ? ? ? ? l--;
? ? ? ? ? ? r++;
? ? ? ? }
? ? ? ? return r - l - 1;
? ? }
}

方法二:動態(tài)規(guī)劃

解題思路:

對于最值問題,往往可以采用動態(tài)規(guī)劃思想降低時間復(fù)雜度和狀態(tài)壓縮,采用空間換時間的思想

算法流程:

確定狀態(tài):對比的兩個字符索引起始和終止索引位置

定義 dp 數(shù)組:字符串s的 i 到 j 索引位置的字符組成的子串是否為回文子串

狀態(tài)轉(zhuǎn)移: 如果左右兩字符相等, 同時[l+1...r-1]范圍內(nèi)的字符是回文子串, 則[l...r] 也是回文子串

狀態(tài)轉(zhuǎn)移的同時,不斷更新對比的子串長度,最終確定最長回文子串的長度

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
? ? public static void main(String[] args) throws IOException {
? ? ? ? BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
? ? ? ? String s = "";
? ? ? ? while ((s = br.readLine()) != null) {
? ? ? ? ? ? System.out.println(validLen(s));
? ? ? ? }
? ? ? ? br.close();
? ? }

? ? public static int validLen(String s) {
? ? ? ? int len = s.length();
? ? ? ? // 狀態(tài):對比的兩個字符索引起始和終止索引位置
? ? ? ? // 定義: 字符串s的i到j(luò)字符組成的子串是否為回文子串
? ? ? ? boolean[][] dp = new boolean[len][len];
? ? ? ? int res = 0;
? ? ? ? // base case
? ? ? ? for(int i = 0; i < len - 1; i++) {
? ? ? ? ? ? dp[i][i] = true;
? ? ? ? }

? ? ? ? for(int r = 1; r < len; r++) {
? ? ? ? ? ? for(int l = 0; l < r; l++) {
? ? ? ? ? ? ? ? // 狀態(tài)轉(zhuǎn)移:如果左右兩字符相等,同時[l+1...r-1]范圍內(nèi)的字符是回文子串
? ? ? ? ? ? ? ? // 則 [l...r] 也是回文子串
? ? ? ? ? ? ? ? if(s.charAt(l) == s.charAt(r) && (r-l <= 2 || dp[l+1][r-1])) {
? ? ? ? ? ? ? ? ? ? dp[l][r] = true;
? ? ? ? ? ? ? ? ? ? // 不斷更新最大長度
? ? ? ? ? ? ? ? ? ? res = Math.max(res, r - l + 1);
? ? ? ? ? ? ? ? }?
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return res;
? ? }
}

到此這篇關(guān)于基于Java解決華為機試實現(xiàn)密碼截取 的文章就介紹到這了,更多相關(guān)Java密碼截取 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot?正確的在異步線程中使用request的示例代碼

    springboot?正確的在異步線程中使用request的示例代碼

    這篇文章主要介紹了springboot中如何正確的在異步線程中使用request,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 一篇文章帶你初步認識Maven

    一篇文章帶你初步認識Maven

    這篇文章主要為大家初步認識了Maven,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • Java Spring分別實現(xiàn)定時任務(wù)方法

    Java Spring分別實現(xiàn)定時任務(wù)方法

    這篇文章主要為大家詳細介紹了Java與Spring設(shè)置動態(tài)定時任務(wù)的方法,定時任務(wù)的應(yīng)用場景十分廣泛,如定時清理文件、定時生成報表、定時數(shù)據(jù)同步備份等
    2022-07-07
  • Spring?BeanDefinition父子關(guān)系示例解析

    Spring?BeanDefinition父子關(guān)系示例解析

    這篇文章主要為大家介紹了Spring?BeanDefinition父子關(guān)系示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Java格式化日期和時間三種方法

    Java格式化日期和時間三種方法

    這篇文章主要給大家介紹了關(guān)于Java格式化日期和時間三種方法的相關(guān)資料,最近遇到很多在Java里獲取當前時間的問題,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • idea推送項目到gitee中的創(chuàng)建方法

    idea推送項目到gitee中的創(chuàng)建方法

    這篇文章主要介紹了idea推送項目到gitee中的創(chuàng)建方法,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • SSH框架網(wǎng)上商城項目第11戰(zhàn)之查詢和刪除商品功能實現(xiàn)

    SSH框架網(wǎng)上商城項目第11戰(zhàn)之查詢和刪除商品功能實現(xiàn)

    這篇文章主要為大家詳細介紹了SSH框架網(wǎng)上商城項目第11戰(zhàn)之查詢和刪除商品功能實現(xiàn)的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • Spring boot 連接多數(shù)據(jù)源過程詳解

    Spring boot 連接多數(shù)據(jù)源過程詳解

    這篇文章主要介紹了Spring boot 連接多數(shù)據(jù)源過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-08-08
  • spring boot項目生成docker鏡像并完成容器部署的方法步驟

    spring boot項目生成docker鏡像并完成容器部署的方法步驟

    這篇文章主要介紹了spring boot項目生成docker鏡像并完成容器部署的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-10-10
  • Java的原子類無鎖并發(fā)利器詳解

    Java的原子類無鎖并發(fā)利器詳解

    這篇文章主要介紹了Java的原子類無鎖并發(fā)利器詳解,原子類同樣能夠解決互斥性問題、原子性問題除此之外,因為原子類是無鎖操作,沒有用互斥鎖解決帶來的加鎖解決性能消耗,這種絕佳方案是怎么做到的呢,需要的朋友可以參考下
    2023-12-12

最新評論

中超| 普宁市| 江油市| 青冈县| 鄂尔多斯市| 虹口区| 忻城县| 彩票| 鄂托克旗| 航空| 永兴县| 应城市| 上林县| 红桥区| 岳池县| 永新县| 平谷区| 和政县| 丹棱县| 山西省| 吉安县| 盐城市| 泽州县| 林口县| 平顶山市| 临夏市| 永胜县| 连云港市| 华池县| 隆化县| 公主岭市| 新化县| 曲沃县| 磴口县| 杭锦后旗| 奉化市| 兰溪市| 论坛| 特克斯县| 莒南县| 紫金县|