將給定字串縮寫,用長度替換所有字元,但首尾字元除外
在這個問題中,我們需要將長度大於2的字串轉換為其縮寫形式。我們可以使用字串的“length”屬性來計算字串中中間字元的總數,並可以使用各自的索引值來獲取首尾字元。
問題陳述− 我們給定了一個長度大於等於2的字串str,需要將其轉換為縮寫形式。
字串的縮寫形式如下所示:首字元 + 中間字元總數 + 尾字元。
示例
輸入
str = ‘abcdefg’
輸出
a5g
說明− ‘a’是首字元,‘g’是尾字元,它們之間共有5個字元。
輸入
str = ‘tutorialspoint’
輸出
t12t
說明− 這裡,首尾字元都是‘t’,中間字元總數為12。
輸入
str = ‘ab’
輸出
a0b
說明− 這裡,中間字元總數為0,因此結果字串為a0b。
方法1
在這種方法中,我們將遍歷字串以查詢字串的長度。之後,我們將訪問字串的首尾字元以建立其縮寫。
演算法
步驟1− 定義變數‘size’並初始化為0,用於儲存給定字串中的字元總數。
步驟2− 使用迴圈遍歷字串,直到我們得到‘\0’作為當前字元。
步驟3− 列印字串的首字元。
步驟4− 列印size − 2。
步驟5− 使用‘size − 1’索引列印字串的尾字元。
示例
#include <iostream>
using namespace std;
void abbreviateWord(string alpha){
int size = 0;
// counting total characters
while (alpha[size] != '\0')
size++;
// first char
cout << alpha[0];
// tota middle characters
cout << size - 2;
// last char
cout << alpha[size - 1];
}
int main(){
string str = "abcdefghi";
abbreviateWord(str);
return 0;
}
輸出
a7i
時間複雜度− O(N),因為我們遍歷字串以計算字串中的字元總數。
空間複雜度− O(1),因為我們不使用額外的空間。
方法2
在這種方法中,我們將使用C++中字串的size()方法來獲取字串的長度。
演算法
步驟1− 使用size()方法獲取字串的長度,並用變數‘len’儲存。
步驟2− 使用索引‘0’訪問字串的首字元並列印。
步驟3− 列印‘len − 2’。
步驟4− 列印字串的尾字元。
示例
#include <iostream>
using namespace std;
void abbreviateWord(string alpha) {
// get the string length
int len = alpha.size();
// 1st char
cout << alpha[0];
// print len - 2
cout << len - 2;
// last char
cout << alpha[len - 1];
}
int main() {
string str = "tutorialspoint";
abbreviateWord(str);
return 0;
}
輸出
t12t
時間複雜度− O(N),因為我們使用了size()方法。
空間複雜度− O(1),因為我們沒有使用動態空間。
結論
在本教程中,我們學習了使用兩種方法列印字串的縮寫。在第一種方法中,我們使用迴圈來計算字串中的字元總數,在第二種方法中,我們使用了size()方法。但是,程式設計師也可以使用length()方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP