在百度面試題中看到這樣一個題,可能比較老套了,這里為了學習,自己寫了改寫了個簡單算法。
我們把一個數字倒着讀和原數字相同的數字稱之為對稱數,
(例如1,121,88,8998),不考慮性能,請找出1—10000(n)之間的對稱數,
private List<int> Getsymmetry(int num)
{
List<int> numList = new List<int>();
bool bIsEqual = true;
for (int j = 1; j <= num; j++)
{
string number = j.ToString();
for (int i = 0; i < number.Length / 2; i++)
{
if (number[i] != number[number.Length - 1 - i])
{
bIsEqual = false;
break;
}
bIsEqual = true;
}
if (bIsEqual)
{
numList.Add(j);
}
}
return numList;
}
這里的numList便保存了我們所有(1到n)的對稱數
在網上看到有位大哥這樣寫,很簡單了。
//這個方法是將數的順序反轉,判斷反轉后的數與原來的數是否相等。
public static bool findNumber(int n)
{
int nValue = 0;
int temp = n;
while (temp > 0)
{
nValue = nValue * 10 + temp % 10;
temp /= 10;
}
return (nValue == n);
}
算法是個復雜的東東。繼續學習中。