20230821-字符串相乘-给树命名(unordered_map)

字符串相乘

有两个非负整数字符串num1,num2,计算num1和num2所表达整数的乘积,结果以字符串形式存储。注意:不能通过强制转换方法解题。
示例1:
输入:
"4", "3"
输出:
"12"
代码:

class Solution {
public:
    // 两个数字相乘,所得乘积的位数小于等于两个数的位数之和。则预留与两数位数之和相等的空间则足够使用
    string multiply(string num1, string num2) {
        int size1 = num1.size();
        int size2 = num2.size();
        string res(size1 + size2, '0');
        for(int i = size1 - 1; i >= 0; i--)
        {
            for(int j = size2 - 1; j >= 0; j--)
            {
                res[i + j + 1]=(res[i + j + 1] - '0')+((num1[i] - '0')*(num2[j] - '0'));//注意这里要使用数字运算
                res[i + j] += (res[i + j + 1] / 10);
                res[i + j + 1]=(res[i + j + 1] % 10) + '0';//这里载入的是字得
            }
        }
        for(int i = 0; i < size1 + size2; ++i)
        {
            if(res[i] != '0')
                return res.substr(i);
        }
        return "0";
    }
};

给树命名

现在需要给n棵树命名,你收集了n个名字(名字为字符串,存在重复的名字)并放在长度为n的vector中,第i棵树为vector中下标为i对应的字符串。每棵树的名字是不能重复的,因此如果发现当前数的名字已经被使用了,那么可以在名字后面加入后缀 (m),其中m是正整数,并且在满足名字唯一条件下m要尽可能小。
返回一个字符串vector,长度为n,其中下标为i对应的字符串为第i棵树的名字。
示例1:
输入
["pddd", "fdaf", "fdaf", "fdsfsd"]
输出
["pddd", "fdaf", "fdaf(1)", "fdsfsd"]
代码:

class Solution{
public:
	vector<string> GetTreeNames(vector<string>& names) {
		unordered_map<string, int> data;
		vector<string> res;
		for(string& str : names)
		{		
			if(data[str] > 0)
				str = str + "(" + to_string(data[str]) + ")"
			res.push_back(str);
			data[str]++;
		}
		return res;
	}
}

你可能感兴趣的:(Algorithms,算法,数据结构)