C++語言演算法之求任意兩個相同字元的最大距離
提問
我們有一個這樣的字串abcaffdffqwwwwrcs,最大長度的多少呢?我們發現兩個c直接的距離最大,這裡最大長度應該是第2個c的位置-第一個c的位置。
演算法思路
下面來講一下演算法是實現思路:
先來看看,我們如何求第一個字母a之間的距離,我們先確定a的位置是第一個,我們用一個變數儲存a的位置,然後再通過下標移動到底2個a的位置,只需要將第二個位置減去第一個位置即可,這就得到了兩個字母之間的距離。
那麼問題來了,我們一個字串有這麼的多字元,那麼我們如何存放每個字元的位置。這裡只需要將每個字元的位置記錄在一個陣列中,用字元的ascii碼作為陣列的下標,然後通過這個下標來訪問,直接記錄或者讀取陣列記錄的位置。
這時候我們每個字元的位置都能記錄,但是這個時候,如何求任何兩個字元直接的距離,我們需要一個變數來記錄最大距離,通過任何兩個字元之間的距離與這個變數比較,如果遇到更遠的,就記錄在這個變數中,直達整個字串都讀取一遍。
演算法實現
//C++實現方法
public:
static int lengthOfLongestSubstring(String s){
vector<int> dict(256,-1);
int maxLen = 0,start = -1;
for(int i = 0;i<s.length();i++){
if(dict[s[i]] > -1){
start = dict[s[i]];
maxLen = max(maxLen,i-start)'
}
dict[s[i]] = i;
}
return max;
}
//C語言實現方法
int lengthOfLongestSubstring(const char * str) {
int dict[256];
int i = 0;
for (; i<256; i++) {
dict[i] = -1;
}
int maxLen = 0;
for (i = 0; i < strlen(str); i++) {
if (dict[str[i]]>-1) {
maxLen = max(maxLen, i - dict[str[i]]);
}
dict[str[i]] = i;
}
return maxLen;
}
相關文章
- C語言:使用函式計算兩點間的距離C語言函式
- 輸入兩個長度相同的字串,比較兩個數在相同位置的字元是否相同字串字元
- 二叉樹任意兩個節點間的最大距離(Java,LeetCode 543二叉樹的直徑 遞迴)二叉樹JavaLeetCode遞迴
- 實現一個函式,對給定平面任意兩點座標(x 1 ,y 1 )和(x 2 ,y 2 ),求這兩點之間的距離函式
- 求矩陣中向量兩兩間的歐氏距離(python實現)矩陣Python
- 計算地圖中兩點之間的距離地圖
- C語言/C++程式設計學習:和QT零距離接觸的意義C語言C++程式設計QT
- 2058. 找出臨界點之間的最小和最大距離
- 編輯距離及編輯距離演算法演算法
- 演算法設計與分析:求兩個自然數的最大公約數演算法
- milvus 使用 l2 歐式距離計算向量的距離,計算出來的距離的最大值是多少?
- 通過sql 計算兩經緯度之間的距離SQL
- Shell 命令求兩個檔案每行對比的相同內容
- leetcode-624.陣列列表中的最大距離LeetCode陣列
- 編輯距離演算法演算法
- c語言遞迴函式實現求最大公約數(Euclid演算法)C語言遞迴函式演算法
- 用一個巨集實現求兩個數中的最大數
- 細學C++之C++語言的特點C++
- 根據經緯度計算兩點之間的距離的公式公式
- 常見問題01:計算地球上兩個點的距離
- C語言計算輸入字元的個數C語言字元
- C語言:計算輸入字元的個數C語言字元
- python語言程式設計——求最大公約數和最小公倍數演算法Python程式設計演算法
- JAVA計算兩經緯度間的距離Java
- Python 實現任意多邊形的最大內切圓演算法_任意多邊形最大內切圓演算法Python演算法
- C++程式語言的四個準則C++
- C語言學習 相同元素C語言
- 定義Point類,採用友元類的方式計算兩個點之間的水平和垂直距離
- C語言: 分類統計字元個數C語言字元
- 461.漢明距離(c++實現)C++
- 123 C++試寫一演算法,求隨機輸入的三個整數的最大值C++演算法隨機
- JavaScript 元素距離視窗頂部的距離JavaScript
- c語言:輸入任意10個正整數,按照升序排序輸出:(冒泡演算法)C語言排序演算法
- 語言演算法之:階乘演算法
- C++程式語言的四個基本準則C++
- 如何斷言兩個元素順序不一致的列表相同?
- 比較兩個table是否相同
- java 根據兩個位置的經緯度,來計算兩地的距離 經緯度處理Java