Рубрики

Нижний регистр в верхний регистр — интересный факт

Проблема: Учитывая строку, содержащую только строчные буквы, генерируйте строку с теми же буквами, но в верхнем регистре.

Input : GeeksForGeeks
Output : GEEKSFORGEEKS 

Первый метод, который приходит на ум, это

C ++

// C ++ программа для преобразования строки в верхний регистр
#include <iostream>

using namespace std;

  
// Преобразует строку в верхний регистр
string to_upper(string &in)
{

    for (int i = 0; i < in.length(); i++)

          if ('a' <= in[i] <= 'z')

              in[i] = in[i] - 'a' + 'A';

    return in;

}

  
// Код драйвера

int main()

{

   string str = "geeksforgeeks";

   cout << to_upper(str);

   return 0;

}

Джава

// Java программа для преобразования строки в верхний регистр

  

class GFG 

{

  

    // Преобразует строку в верхний регистр

    static String to_upper(char[] in)

    {

        for (int i = 0; i < in.length; i++) 

        {

            if ('a' <= in[i] & in[i] <= 'z')

            {

                in[i] = (char) (in[i] - 'a' + 'A');

            }

        }

        return String.valueOf(in);

    }

  

    // Код драйвера

    public static void main(String[] args) 

    {

        String str = "geeksforgeeks";

        System.out.println(to_upper(str.toCharArray()));

    }

  
// Этот код предоставлен PrinciRaj1992

python3

# Python3 программа для преобразования строки в верхний регистр

  
# Преобразует строку в верхний регистр

def to_upper(string):

    for i in range(len(string)):

        if ('a' <= string[i] <= 'z'):

            string = (string[0:i] + chr(ord(string[i]) - 

                                        ord('a') + ord('A')) +

                                        string[i + 1:])

    return string;

  
# Код драйвера

if __name__ == '__main__':

    str = "geeksforgeeks";

    print(to_upper(str));

  
# Этот код предоставлен Rajput-Ji

C #

// C # программа для преобразования строки в верхний регистр

using System;

  

class GFG 

{

    // Преобразует строку в верхний регистр

    static String to_upper(char []In)

    {

        for (int i = 0; i < In.Length; i++) 

        {

            if ('a' <= In[i] & In[i] <= 'z')

            {

                In[i] = (char) (In[i] - 'a' + 'A');

            }

        }

        return String.Join("", In);

    }

  

    // Код драйвера

    public static void Main() 

    {

        String str = "geeksforgeeks";

        Console.WriteLine(to_upper(str.ToCharArray()));

    }

}

  
// Этот код предоставлен 29AjayKumar

Выход :

GEEKSFORGEEKS

С другой стороны, более интересным решением будет:

C ++

// C ++ программа для преобразования строки в верхний регистр
#include <iostream>

using namespace std;

  
// Преобразует строку в верхний регистр
string to_upper(string &in)
{

    for (int i = 0; i < in.length(); i++)

          if ('a' <= in[i] <= 'z')

              in[i] &= ~(1 << 5);

    return in;

}

  
// Код драйвера

int main()

{

   string str = "geeksforgeeks";

   cout << to_upper(str);

   return 0;

}

Джава

// Java программа для преобразования строки в верхний регистр

class GFG 

{

  
// Преобразует строку в верхний регистр

static String to_upper(char[] in)

{

    for (int i = 0; i < in.length; i++)

        if ('a' <= in[i] && in[i] <= 'z')

            in[i] &= ~(1 << 5);

    return String.valueOf(in);

}

  
// Код драйвера

public static void main(String[] args)

{

    String str = "geeksforgeeks";

    System.out.println(to_upper(str.toCharArray()));

}
}

  
// Этот код предоставлен Rajput-Ji

C #

// C # программа для преобразования строки в верхний регистр

using System;

  

class GFG 

{

  
// Преобразует строку в верхний регистр

static String to_upper(char[] str)

{

    for (int i = 0; i < str.Length; i++)

        if ('a' <= str[i] && str[i] <= 'z')

            str[i] = (char)((int)str[i]&(~(1 << 5)));

    return String.Join("", str);

}

  
// Код драйвера

public static void Main(String[] args)

{

    String str = "geeksforgeeks";

    Console.WriteLine(to_upper(str.ToCharArray()));

}
}

  
// Этот код предоставлен PrinciRaj1992

Выход :

GEEKSFORGEEKS

Объяснение: Таблица ASCII построена таким образом, что двоичное представление строчных букв практически идентично двоичному представлению прописных букв. Единственное отличие — шестой бит, установленный только для строчных букв. То, что делает эта элегантная функция, сбрасывает бит индекса 5 в [i], следовательно, делая этот символ строчным.

Недостатки:
эта стратегия работает только для алфавитных символов. Если ввод содержит цифры или знаки препинания, нам придется использовать наивный способ.

Пример:
символ «A» является целым числом 65 = (0100 0001) 2, а символ «a» является целым числом = 97 = (0110 0001) 2 . (Обратите внимание, что 97 — 65 = 32. Можете ли вы догадаться, почему?)

Упражнения:

  1. Напишите функцию, чтобы сделать все буквы строки строчными. Пример: GeeksForGeeks превращает Geeksforgeeks.
  2. Напишите функцию, которая изменяет регистр строки. Пример: GeeksForGeeks превращает gEEKSfORgEEKS.

Эта статья предоставлена Игорем Карпанезе . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Нижний регистр в верхний регистр — интересный факт

0.00 (0%) 0 votes