Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реверс строки 
:(
    Опции темы
New_Programmer
Дата 13.1.2007, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 13.1.2007

Репутация: нет
Всего: нет



Как можно сделать реверс строки?
Или проверить является ли строка палиндромом?

Зарание спасибо.
PM MAIL   Вверх
archimed7592
Дата 13.1.2007, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 7
Всего: 93



Код
String s = "bla-bla-bla";
Char[] ca = s.ToCharArray ();
Array.Reverse (ca);
String rs = new String (ca); // <<=== реверсированная строка



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
mr.DUDA
Дата 13.1.2007, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Проверку на палиндром, с учётом пробелов, можно сделать вот так:
Код
using System;
using System.Text;

class Program
{
    static void Main()
    {
        string str = "А роза упала на лапу Азора";

        int len = str.Length;
        int j = len - 1;
        bool isPalindrom = true;

        // идём с двух сторон строки - с начала (i) и с конца (j)
        for (int i = 0; i < len && j >= 0; i++, j--)
        {
            // пропускаем пробелы
            while (i < len && char.IsWhiteSpace(str[i]))
                i++;
            while (j >= 0 && char.IsWhiteSpace(str[j]))
                j--;

            // проверяем, не вышли ли за рамки
            if (i >= len || j < 0)
            {
                isPalindrom = false;
                break;
            }

            // сравниваем два символа с двух сторон строки
            if (char.ToLower(str[i]) != char.ToLower(str[j]))
            {
                isPalindrom = false;
                break;
            }
        }

        if (isPalindrom)
            Console.WriteLine("Это палиндром");
        else
            Console.WriteLine("Это НЕ палиндром");
    }
}




Добавлено @ 00:26 
Конечно, можно сделать ToLower, Replace пробелов на пустую строку, Reverse и сравнение двух строк -- но чтобы понять, как всё работает (и потом объяснить), лучше всё проделать самому. Тем более что лишних строк в моём примере не создаётся, а цикл один а не десять.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.