对于一个字符串,如果这个字符串在ASCII码的意义上是有序的,即升序或降序,则称该字符串为“优雅的字符串”。一个长为n的字符串s,对于1<= i <= n - 1,如果总有s[i] <= s[i+1],则字符串为升序;如果总有s[i] >= s[i+1],则字符串降序。现给定一个字符串,请你判断该字符串是否“优雅”,如果该字符串是“优雅”的,则判断是“正优雅”(升序)还是“负优雅”(降序)。
输入描述
一个非空,不包含空格的字符串s,保证字符串中的字符都是ASCII标准中的字符。数据保证不会出现所有字符相同的字符串。(2<= length(s) <=1e5)
输出描述
如果字符串“正优雅”,则输出“Positive elegance”,如果“负优雅”,则输出“Negative elegance”,否则输出“Non elegance”(均不含引号)。
提示无
样例输入复制样例输入数据
(*+11223356ASdfz
样例输出Positive elegance
允许最长运行时间1000ms
允许使用最大内存512KB
#include <stdio.h>
#include <string.h>
int main()
{
char str[10000] = "(*+11223356ASdfz";
int status = 0, tmp, i;
int len = strlen(str);
for (i = 1; i < len; i++)
{
status = str[i] - str[i - 1];
if (status != 0)
break;
}
for (; i < len; i++)
{
tmp = str[i] - str[i - 1];
if (tmp == 0)
continue;
if (tmp < 0 && status < 0)
status = tmp;
else if (tmp > 0 && status > 0)
status = tmp;
else
{
status = 0;
break;
}
}
if (status == 0)
printf("Non elegance\n");
else if (status > 0)
printf("Positive elegance\n");
else if (status < 0)
printf("Negative elegance\n");
return 0;
}