Я решаю вопрос о leetcode, где мне нужно умножать строки, и я получил эту ошибку, которую не могу понять.
Строка 518: Char 69: ошибка времени выполнения: применение ненулевого смещения 18446744073709551615 к нулевому указателю (basic_string.h) ОБЗОР: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/ ../../../../include/С++/9/биты/basic_string.h:527:69
Вот мой код
string multiply(string s1, string s2) {
vector<int> vec(s1.length()+s2.length(),0);
for(int i=s2.length()-1;i>=0;i--){
for(int j=s1.length()-1;j>=0;j--){
int pro = (s1[j]-'0')*(s2[i]-'0') ;
//borrow sent to next
int sum = vec[i+j+1] + pro;
vec[i+j+1] = (sum%10);
vec[i+j] += (sum/10);
}
}
string ans="";
for(int i=0; i<(s1.length()+s2.length());i++){
if(ans=="" && vec[i]==0){
continue;
}
ans.push_back(vec[i]+'0');
}
if(ans==""){
return 0;
}
return ans;
}
ССЫЛКА: https://leetcode.com/problems/multiply-strings/
s1.length() - 1
не делает то, что вы думаете оно делает. Что произойдет, еслиs1.length() == 0
? - person Evg   schedule 30.03.2021