C++ 将给定的字符串缩写为替换所有字符的长度,除了第一个和最后一个

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()方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程