第九题,算是一个数学题,测位数,计算左右两个base,往中间测试,O(n),O(1),没必要转换成字符串。
我才注意到最大32位有符号正数可以写为0x7fffffff(1个0,31个1),我一直写的2147483647……
class Solution {
public:
bool isPalindrome(int x) {
//平凡情况
if (x < 0) {//负数一定不是回文数
return false;
}
if (x < 10) {//个位正数一定是回文数
return true;
}
if (x == 11 || x == 22 || x == 33 || x == 44 || x == 55 || x == 66 || x == 77 || x == 88 || x == 99) {//两位回文数
return true;
}
int length = 0;
int base1 = 1, base2 = 1;//左base和右base
int test = x;
while (test) {//计算位数,同时计算出左边的base1
test /= 10;
if (length) {
base1 *= 10;
}
length++;
}
for (int i = 0; i < length / 2; i++) {
if ((x / base1) % 10 != (x / base2) % 10) {//对称位不相等即可返回
return false;
}
//两个base向中间靠拢
base1 /= 10;
base2 *= 10;
}
return true;
}
};
应该可以把数字倒过来然后看是否相等。
我才注意到最大32位有符号正数可以写为0x7fffffff(1个0,31个1),我一直写的2147483647……
class Solution {
public:
bool isPalindrome(int x) {
//平凡情况
if (x < 0) {//负数一定不是回文数
return false;
}
if (x < 10) {//个位正数一定是回文数
return true;
}
if (x == 11 || x == 22 || x == 33 || x == 44 || x == 55 || x == 66 || x == 77 || x == 88 || x == 99) {//两位回文数
return true;
}
int length = 0;
int base1 = 1, base2 = 1;//左base和右base
int test = x;
while (test) {//计算位数,同时计算出左边的base1
test /= 10;
if (length) {
base1 *= 10;
}
length++;
}
for (int i = 0; i < length / 2; i++) {
if ((x / base1) % 10 != (x / base2) % 10) {//对称位不相等即可返回
return false;
}
//两个base向中间靠拢
base1 /= 10;
base2 *= 10;
}
return true;
}
};
应该可以把数字倒过来然后看是否相等。
【#汤加#海底#火山喷发# 多国发布#海啸#预警】当地时间15日,南太平洋岛国汤加再次发生火山喷发,汤加、新西兰、澳大利亚、美国等国均发布海啸警报。Plusieurs pays comme la Nouvelle-Zélande, l'Australie et les États-Unis ont lancé samedi des alertes au tsunami à la suite d'une violente éruption d'un volcan sur l'île Hunga Ha'apai des Tonga, à environ 65 km au nord de sa capitale Nuku'alofa. "Nous prévoyons des courants forts et inhabituels et des surtensions imprévisibles sur le rivage dans les zones côtières néo-zélandaises sur les côtes nord et est de l'île du Nord et des îles Chatham connaissent", a déclaré samedi l'agence nationale néo-zélandaise de gestion des urgences tout en exhortant les gens à s'éloigner des plages et des zones côtières. L'Australie a émis une alerte au tsunami aux îles et territoires au large, y compris l'île Norfolk, au cours de l'éruption. "Bien que les évacuations ne soient pas nécessaires pour les zones de menace marine, il est conseillé aux habitants dans ces zones de sortir de l'eau et de s'éloigner du bord immédiat de l'eau", a déclaré le bureau de météorologie du pays. Un avis de tsunami a également été émis pour Hawaï et certaines parties de la côte américaine du Pacifique, notamment la Californie, l'Oregon, Washington, l'Alaska et la province canadienne de la Colombie-Britannique, a indiqué le National Tsunami Warning Center dans un bulletin. Les résidents vivant à proximité des plages, des ports, des marinas et d'autres zones côtières ont été invités à s'éloigner du rivage et à se diriger vers l'intérieur ou vers le haut, ajoute le bulletin. Les Tonga ont émis samedi après-midi une autre alerte au tsunami à l'échelle nationale après une première vendredi matin. Tous les vols intérieurs aux Tonga ont été annulés samedi en raison du volcan actif.
【#汤加#海底#火山喷发#引发#海啸#】南太平洋岛国汤加的洪阿哈阿帕伊岛海底火山15日发生剧烈喷发后,引发局地海啸,汤加首都浪高一度达到1米2。巨浪随后冲上岸边,迫使民众撤往高地。De grosses vagues s'écrasent sur le rivage aux Tonga dans le sud du Pacifique après une éruption volcanique sous-marine massive. Les autorités météorologiques australiennes disent qu'une vague de 1,2 mètre a été observée dans la capitale des Tonga. L'éruption volcanique de samedi est survenue quelques heures seulement après la levée d'une alerte au tsunami. Elle a duré au moins 8 minutes et a envoyé des panaches de gaz, de cendres et de fumée à plusieurs kilomètres dans les airs. Les résidents des zones côtières sont invités à se rendre vers des terrains plus élevés. D'autres ont été priés de rester à l'intérieur et de porter le masque à l'extérieur.
✋热门推荐