3"/> 3">
搜尋
首頁後端開發C++按字元的ASCII值對字串進行排序
按字元的ASCII值對字串進行排序Sep 07, 2023 pm 08:29 PM
字元ascii排序

按字元的ASCII值對字串進行排序

ASCII 值

ASCII(美國資訊交換標準代碼)是電腦和互聯網上文件資料最常見的字元編碼格式。在標準 ASCII 編碼資料中,256 個字母、數字或特殊附加字元和控制代碼都有唯一值。

問題陳述

現在,在這個問題中,我們需要根據字元的 ASCII 值按升序找到排序後的字串,其中該字串將是用戶給我們的輸入。讓我們看看應該如何解決這個問題。

讓我們嘗試借助一些範例來理解這個問題。

輸入 - s = "$%7wjk()"

輸出 - “$%()7jkw”

說明 - 給定字串的字元的 ASCII 值如下 -

$ -> 36
% -> 37
( -> 40
) -> 41
7 -> 55
j -> 106
k -> 107
w -> 119

因此,依照 ASCII 碼值的遞增順序,字串將變成「$%()7jkw」

輸入 - s = "#m 0f )nk"

輸出 - “#)0fkmn”

說明 - 給定字串的字元的 ASCII 值如下 -

(space) -> 32
# -> 35
) -> 41
0 -> 48
f -> 102
k -> 107
m -> 109
n -> 110

因此,依照 ASCII 碼值的遞增順序,字串將變成「#)0fkmn」

問題解釋

讓我們嘗試了解問題並找到解決方案。我們知道 ASCII 表中有 256 個字符,其中每個字符都有唯一的值或位置。所以我們的基本目標是對字元進行對應的排序。我們可以透過使用可用於實現我們的目標的外部函數來使用內建排序函數。另一種方法是建立頻率向量並將每個字元的頻率儲存在該數組中。使用這個頻率向量和 ASCII 值,我們可以獲得新的字串。

解決方案 1 使用頻率向量

演算法

  • 建立一個大小為 256 的頻率向量,因為 ASCII 表中的字元總數為 256,並以零開始整個向量

  • 運行循環來儲存給定字串的每個字元的頻率

  • #現在定義一個原本為空的輸出字串

  • 運行另一個循環來遍歷頻率向量,因此我們可以透過對第 i 個位置Frequency_vector[i]進行類型轉換來獲得輸出字串

  • 傳回輸出字串作為最終結果

範例

以下是上述方法的 C 程式實作:

#include <bits/stdc++.h>
using namespace std;
// Function to Sort the string as per ASCII values of the characters
string Helper(string s){
    // Define the size of the given string
	int size = s.length();
	// Define a frequency vector of size 256, which is the same as the size of the characters as per the ASCII table, and initiate the value of the vector as 0
	vector<int> v(256, 0);
	// Run a loop to count the frequency of each character of the string
	for (int i = 0; i < size; i++) {
		v[s[i]]++;
	}	
	// Declare a string, initially empty, to find the final output
	string ans = "";
	// Run another loop to get the final output in accordance with the ASCII table
	for (int i = 0; i < 256; i++) {
		for (int j = 0; j < v[i]; j++)
		// Typecast the integer value to the character value to include it in the loop
			ans = ans + (char)i;
	}
	// Return the final output
	return ans;
}
int main(){
    // Give input as a string by the user
	string s = "$%7wjk()";
	// Call Helper function to perform the remaining tasks
	cout<< "The sorted string as per ASCII values of the characters is: " << Helper(s);
	return 0;
}

輸出

The sorted string as per ASCII values of the characters is: $%()7jkw

上述程式碼的複雜性

  • 時間複雜度 - O(n);其中 n 是字串的大小。這裡,實際的時間複雜度是O(n * 256),但我們可以將其視為O(n),因為256 可以視為常數,例如k,而O(k * n) 僅視為O(n )。

  • 空間複雜度 - O(256);因為這裡唯一佔用的額外空間是頻率陣列的空間,其大小為256。

解決方案 2 使用內建排序功能的解決方案

演算法

  • 定義一個外部比較函數,用於排序函數中,根據 ASCII 值對字元進行排序,即傳回 int 型別轉換值小於其他字元的字元。

    李>
  • 現在,在輔助函數中使用內建排序函數並使用額外參數(比較函數)來正確取得順序。

  • 呼叫輔助函數並取得最終的字串輸出。

範例

#include "bits/stdc++.h"
using namespace std;
// Comparison Function to sort the string as per ASCII values of the characters
bool comparison(char ch1, char ch2){ 
    return int(ch1) <= int(ch2);
}
// Function to sort the string as per ASCII values of the characters
string Helper(string s){
	// Sort the string s with the help of the inbuilt function sort()
	sort(s.begin(), s.end(), comparison);
	// Return the final output string s
	return s;
}
int main(){
    // Give input as a string by the user
	string s = "$%7wjk()";
	// Call Helper function to perform the remaining tasks
	cout<< "The sorted string as per ASCII values of the characters is: " << Helper(s);
	return 0;
}

輸出

The sorted string as per ASCII values of the characters is: $%()7jkw

上述程式碼的複雜性

  • 時間複雜度:O(log(n));眾所周知,內建排序函數需要 O(n * log(n)) 時間來執行程式碼。在這種方法中,我們透過使用附加比較函數來使用內建排序函數,該比較函數將根據該函數對字元進行排序。

  • 空間複雜度:O(1);在上面的程式碼中,我們沒有在某些資料結構中儲存任何變數。

結論

在本文中,根據字元的 ASCII 值按升序查找排序後的字串。我們可以透過兩種方法來解決這個問題。首先,我們可以製作一個大小為256(與ASCII表中的字元數相同)的頻率向量,並儲存每個字元的所有頻率,然後從後面遍歷就可以得到所需的字串。另一種方法可以藉助內建排序函數,並藉助排序函數中傳遞的額外參數。

以上是按字元的ASCII值對字串進行排序的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
使用Python实现XML数据的筛选和排序使用Python实现XML数据的筛选和排序Aug 07, 2023 pm 04:17 PM

使用Python实现XML数据的筛选和排序引言:XML是一种常用的数据交换格式,它以标签和属性的形式存储数据。在处理XML数据时,我们经常需要对数据进行筛选和排序。Python提供了许多有用的工具和库来处理XML数据,本文将介绍如何使用Python实现XML数据的筛选和排序。读取XML文件在开始之前,我们需要先读取XML文件。Python有许多XML处理库,

C++程序:按字母顺序重新排列单词的位置C++程序:按字母顺序重新排列单词的位置Sep 01, 2023 pm 11:37 PM

在这个问题中,一个字符串被作为输入,我们必须按字典顺序对字符串中出现的单词进行排序。为此,我们为字符串中的每个单词(之间用空格区分)分配一个从1开始的索引,并以排序索引的形式获得输出。String={“Hello”,“World”}“Hello”=1“World”=2由于输入字符串中的单词已按字典顺序排列,因此输出将打印为“12”。让我们看看一些输入/结果场景-假设输入字符串中的所有单词都相同,让我们看看结果-Input:{“hello”,“hello”,“hello”}Result:3获得的结

如何优化Java集合排序性能如何优化Java集合排序性能Jun 30, 2023 am 10:43 AM

Java是一种功能强大的编程语言,广泛应用于各类软件开发中。在Java开发中,经常会涉及到对集合进行排序的场景。然而,如果不对集合排序进行性能优化,可能会导致程序的执行效率下降。本文将探讨如何优化Java集合排序的性能。一、选择合适的集合类在Java中,有多种集合类可以用来进行排序,如ArrayList、LinkedList、TreeSet等。不同的集合类在

如何利用vue和Element-plus实现数据的分组和排序如何利用vue和Element-plus实现数据的分组和排序Jul 18, 2023 am 10:39 AM

如何利用Vue和ElementPlus实现数据的分组和排序Vue是一种流行的JavaScript框架,它可以帮助我们构建前端应用程序。ElementPlus是基于Vue的桌面端组件库,它提供了丰富的UI组件,使我们能够轻松地构建出漂亮且用户友好的界面。在本文中,我们将探讨如何利用Vue和ElementPlus来实现数据的分组和排序。首先,我们需要准备一

Java开发中如何优化集合排序去重性能Java开发中如何优化集合排序去重性能Jul 02, 2023 am 11:25 AM

Java开发中,集合排序和去重是常见的需求。然而,在处理大数据集合时,性能往往会成为一个问题。本文将介绍一些优化技巧,帮助提升集合排序和去重的性能。一、使用合适的数据结构在Java中,最常用的数据结构是ArrayList和HashSet。ArrayList适用于需要保持元素顺序的情况,而HashSet则适用于需要去重的情况。在排序和去重的场景中,我们可以使用

Java实现的常见排序算法详解Java实现的常见排序算法详解Jun 18, 2023 am 10:48 AM

排序算法是计算机科学中的一个重要概念,是许多应用程序的核心部分。在日常生活和工作中,我们经常需要对数据进行排序,例如排列名单、对数值进行排序等。Java作为一种广泛使用的编程语言,提供了许多内置的排序算法。本文将详细介绍Java中实现的常见排序算法。1.冒泡排序(BubbleSort)冒泡排序是最简单但最慢的排序算法之一。它遍历整个数组,比较相邻的元素并一

如何在Java 14中使用Records类来实现自动比较和排序如何在Java 14中使用Records类来实现自动比较和排序Jul 30, 2023 pm 01:06 PM

如何在Java14中使用Records类来实现自动比较和排序Java14引入了一种新的类称为Records类,它为我们提供了一种简洁而强大的方式来定义不可变的数据类。Records类具有自动为每个字段生成getter方法、equals()方法和hashCode()方法的特性,这使得比较和排序非常方便。在这篇文章中,我们将通过示例代码来演示如何在Java

如何使用PHP完成一个中文拼音首字母的排序功能?如何使用PHP完成一个中文拼音首字母的排序功能?Sep 05, 2023 am 11:31 AM

如何使用PHP完成一个中文拼音首字母的排序功能?在许多应用程序中,我们经常需要对一些中文字符串进行排序。而中文字符串的排序需要按照拼音的首字母进行排序,这就需要我们使用PHP来完成一个中文拼音首字母的排序功能。下面我们将详细介绍如何使用PHP来实现这个功能。首先,我们需要使用到一个PHP扩展库,叫做"pinyin",它提供了将中文转换为拼音的功能。可以通过在

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),