Так что это была проблема из CodeLeet, чтобы найти самую длинную палиндромную подстроку.Почему Visual Studio не поддерживает переменные для размера массива?
В интерфейсе codeleet это решение работает:
class Solution {
public:
string longestPalindrome(string s) {
int len = s.size();
int P[len][len];
memset(P, 0, len*len*sizeof(int));
int maxL=0, start=0, end=0;
for(int i =0; i< s.size(); i++){
for(int j =0; j<i; j++){
P[j][i] = (s[j] == s[i] && (i-j<2 || P[j+1][i-1]));
if(P[j][i] && maxL < (i-j+1))
{
maxL = i-j+1;
start = j;
end = i;
}
}
P[i][i] =1;
}
return s.substr(start, end-start +1);
}
};
Но когда пишут то же самое, как функции в Visual Studio:
string User::longestPalindromeStr(string s) {
int len = s.size();
int P[len][len];
memset(P, 0, len*len * sizeof(int));
int maxL = 0, start = 0, end = 0;
for (int i = 0; i< s.size(); i++)
{
for (int j = 0; j<i; j++)
{
P[j][i] = (s[j] == s[i] && (i - j<2 || P[j + 1][i - 1]));
if (P[j][i] && maxL < (i - j + 1))
{
maxL = i - j + 1;
start = j;
end = i;
}
}
P[i][i] = 1;
}
return s.substr(start, end - start + 1);
}
он говорит для лена переменная: выражение должно иметь постоянное значение? Это какая-то проблема с идеей VIsual studio. Как я могу это решить?
Возможный дубликат [Массивы переменной длины в C++?] (Http://stackoverflow.com/questions/1887097/variable-length-arrays-in-c) –