C++ 将给定的字符串缩写为替换所有字符的长度,除了第一个和最后一个
在这个问题中,我们需要将长度大于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()方法。